您的位置:首页 > 编程语言 > Java开发

Struts2中对Servlet API的访问

2017-05-06 15:09 417 查看
1 通过接口进行对象注入,action必须是实现相应的接口,struts就可以将指定的对象传递给action类

ServletContextAware接口:可以获得ServletContext对象

ServletResponseAware接口:可以获得ServletResponse对象

ServletRequestAware接口:可以获得ServletRequest对象

request.getSession获得session对象

public class ServletAction extends ActionSupport implements ServletRequestAware{

private HttpServletRequest request;

@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
@Override
public String execute() throws Exception {
System.out.println(request.getContextPath());
return SUCCESS;
}
}


执行结果:



2 ServletActionContext 工具类,struts 的action类中获得servlet的api

获得servlet 对象,可以操作域数据,可以调用其他api

HttpServletRequest ServletActionContext.getRequest();

HttpSession ServletActionContext.getRequest().getSession();

ServletContext ServletActionContext.getServletContext();

public class ServletAction extends ActionSupport {

@Override
public String execute() throws Exception {
ServletActionContext.getResponse();
ServletActionContext.getRequest().setAttribute("sac", "ServletActionContext_request");
ServletActionContext.getRequest().getSession().setAttribute("sac", "ServletActionContext_session");
ServletActionContext.getServletContext().setAttribute("sac", "ServletActionContext_application");

return SUCCESS;
}

}


jsp代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<h3>获得3作用域内容 -- ServletActionContext</h3>
${requestScope.sac} <br/>
${sessionScope.sac} <br/>
${applicationScope.sac} <br/>
</body>
</html>


执行结果:



3 通过Action上下文对象ActionContext,可以间接对servlet 域数据进行操作,实现了解耦,不依赖于servlet api

获得ActionContext实例:ActionContext.getContext()

间接操作域数据

public class ServletAction extends ActionSupport {
@Override
public String execute() throws Exception {
ActionContext.getContext().put("ac", "ActionContext_request");
ActionContext.getContext().getSession().put("ac", "ActionContext_session");
ActionContext.getContext().getApplication().put("ac", "ActionContext_application");

return SUCCESS;
}
}


jsp代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<h3>获得3作用域内容-- ActionContext</h3>
${requestScope.ac} <br/>
${sessionScope.ac} <br/>
${applicationScope.ac} <br/>
</body>
</html>


执行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet struts2.0