8.通过和ServletAPI耦合的方式获取WEB资源
2017-10-21 13:41
393 查看
耦合的方式获取web资源的途径有两种:
1 使用ServletActionContext
2.实现ServletXxxAware接口
通过耦合方式获取web资源,可以只用很多原生API而不局限于,非耦合只能获得Map集合。
一般的处理顺序:
1.后台的类和执行方法,和返回的页面
2.struts2.xml中配置这个类和方法,还有返回的页面指向的路径,接受请求的路径
3.编写请求发起的页面和表单或者url
4.回显的页面
第一种方法:
package com.atguigu.struts2.actions;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
public class TestServletActionContextAction {
public String execute(){
/**
* ServletActionContext:可以从中获取到当前Action对象需要的一切Servlet相关API
* 常用的方法:
* 1.获取HttpServletRequest:ServletActionContext.getRequest();
* 2.获取HttpSession:ServletActionContext.getRequest().getSession();
* 3.获取ServletContext:ServletActionContext.getServletContext();
*
*/
HttpServletRequest request= ServletActionContext.getRequest();
HttpSession session = ServletActionContext.getRequest().getSession();
ServletContext setvletContext = ServletActionContext.getServletContext();
System.out.println("execute...");
return "success";
}
}
第二种方法:是实现接口的方式获取(public class TestServletxxxAware implements ServletContextAware,ServletRequestAware,ServletResponseAware)
package com.atguigu.struts2.actions;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
/**
* 通过实现ServletXxxAware接口的方式可以由Struts2注入需要的Servlet相关的对象
* 常用的方法:
* 1.ServletRequestAware:注入HttpServletRequest对象(比较常用)
* 2.ServletContextAware:注入ServletRequest对象(比较常用)
* 3.ServletResponseAware:注入HttpServletSponse对象
*
*/
public class TestServletxxxAware implements ServletContextAware,ServletRequestAware,ServletResponseAware{
@Override
public void setServletResponse(HttpServletResponse response) {
System.out.println(response);
}
@Override
public void setServletRequest(HttpServletRequest request) {
System.out.println(request);
}
private ServletContext context;
@Override
public void setServletContext(ServletContext context) {
System.out.println(context);
this.context=context;
}
public String execute(){
System.out.println("ServletContext:"+ context);
return "success";
}
}
------------------------------------------------------------------------------------------------------------------------------------------
实现代码:
index.jsp
<body>
<a href="TestServletActionContext">TextServletActionContext</a></br>
<a href="TestServletAware">TestServletAware</a></br></br>
</body>
Struts.xml
<package name="default" namespace="/" extends="struts-default">
//action-class:action所在的路径(包名+类名);默认值为:com.opensymphony.xwork2.ActionSupport,可不写
<action name="TestServletActionContext" class="com.atguigu.struts2.actions.TestServletActionContext">
<result>/success.jsp</result>
</action>
<action name="TestServletAware" class="com.atguigu.struts2.actions.TestServletAware">
<result>/success.jsp</result>
</action>
</package>
1 使用ServletActionContext
2.实现ServletXxxAware接口
通过耦合方式获取web资源,可以只用很多原生API而不局限于,非耦合只能获得Map集合。
一般的处理顺序:
1.后台的类和执行方法,和返回的页面
2.struts2.xml中配置这个类和方法,还有返回的页面指向的路径,接受请求的路径
3.编写请求发起的页面和表单或者url
4.回显的页面
第一种方法:
package com.atguigu.struts2.actions;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
public class TestServletActionContextAction {
public String execute(){
/**
* ServletActionContext:可以从中获取到当前Action对象需要的一切Servlet相关API
* 常用的方法:
* 1.获取HttpServletRequest:ServletActionContext.getRequest();
* 2.获取HttpSession:ServletActionContext.getRequest().getSession();
* 3.获取ServletContext:ServletActionContext.getServletContext();
*
*/
HttpServletRequest request= ServletActionContext.getRequest();
HttpSession session = ServletActionContext.getRequest().getSession();
ServletContext setvletContext = ServletActionContext.getServletContext();
System.out.println("execute...");
return "success";
}
}
第二种方法:是实现接口的方式获取(public class TestServletxxxAware implements ServletContextAware,ServletRequestAware,ServletResponseAware)
package com.atguigu.struts2.actions;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
/**
* 通过实现ServletXxxAware接口的方式可以由Struts2注入需要的Servlet相关的对象
* 常用的方法:
* 1.ServletRequestAware:注入HttpServletRequest对象(比较常用)
* 2.ServletContextAware:注入ServletRequest对象(比较常用)
* 3.ServletResponseAware:注入HttpServletSponse对象
*
*/
public class TestServletxxxAware implements ServletContextAware,ServletRequestAware,ServletResponseAware{
@Override
public void setServletResponse(HttpServletResponse response) {
System.out.println(response);
}
@Override
public void setServletRequest(HttpServletRequest request) {
System.out.println(request);
}
private ServletContext context;
@Override
public void setServletContext(ServletContext context) {
System.out.println(context);
this.context=context;
}
public String execute(){
System.out.println("ServletContext:"+ context);
return "success";
}
}
------------------------------------------------------------------------------------------------------------------------------------------
实现代码:
index.jsp
<body>
<a href="TestServletActionContext">TextServletActionContext</a></br>
<a href="TestServletAware">TestServletAware</a></br></br>
</body>
Struts.xml
<package name="default" namespace="/" extends="struts-default">
//action-class:action所在的路径(包名+类名);默认值为:com.opensymphony.xwork2.ActionSupport,可不写
<action name="TestServletActionContext" class="com.atguigu.struts2.actions.TestServletActionContext">
<result>/success.jsp</result>
</action>
<action name="TestServletAware" class="com.atguigu.struts2.actions.TestServletAware">
<result>/success.jsp</result>
</action>
</package>
相关文章推荐
- 9. Struts2_通过和 ServletAPI 耦合的方式获取 WEB 资源
- (08)通过和 ServletAPI 耦合的方式获取 WEB 资源
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
- Structs2通过耦合的方式访问WEB资源
- Struts2通过ActionContext解耦的方式获取WEB资源
- Struts2-耦合方式和非耦合方式获取WEB资源
- Struts2通过Aware方式获取WEB资源
- 后台通过HttpServletRequest对象获取页面表单传递过来的参数的方式
- struts2 中获取 web资源的方式
- JAVA_WEB Struts2学习:Struts2解耦、耦合方式获取request、session、aplication对象
- springMVC参数的传递方式(1.通过@PathVariabl获取路径参数,2.@ModelAttribute获取数据,3.HttpServletRequest取参,4@RequestParam)
- struts2 (二)单元测试/通过耦合和非耦合的方式获取和设置值/返回值类型/异常映射
- Struts2获取web资源的几种方式
- webpack通过url-loader获取资源文件路径
- springMVC参数的传递方式(1.通过@PathVariabl获取路径参数,2.@ModelAttribute获取数据,3.HttpServletRequest取参,4@RequestParam)
- ServletConfig----ServletContext----ServletResponse----获取资源路径的三种方式
- Struts2框架获取Servlet API之注入方式详解
- Struts2中与Servlet API进行耦合获取servlet中的application,session,request对象
- Struts2获取Web容器资源的方式
- ServletConfig对象 【通过此对象获取到web.xml中的信息】