Action中获取Servlet的其他对象-request.response,ActionMapping,context

来源:互联网 发布:单板滑雪u型池具体数据 编辑:程序博客网 时间:2024/05/21 21:02

J2EE开发各类资源下载清单,  史上最全IT资源,个人收藏总结!


Struts2的Action中也可以获取Servlet的其他对象,如request,response,ActionMapping,context等,Struts提供了两种方式:

  方法一,通过ServletActionContext.类直接获取:

package edu.action;import java.io.IOException;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import org.apache.struts2.dispatcher.mapper.ActionMapping;public class ServletObjectAction {public String execute() throws IOException{HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();ServletContext application = ServletActionContext.getServletContext();ActionMapping mapping = ServletActionContext.getActionMapping();    //这个时候需要自己处理request请求中的乱码问题request.setCharacterEncoding("utf-8");//response.getWriter().print("this is the message writed by ServletObjectAction.execute");request.setAttribute("req","request作用域范围值");request.getSession().setAttribute("sess", "session作用域范围值");application.setAttribute("app","application作用域范围值");        return "showMessage";}}

  方法二,实现指定接口,由struts框架运行时注入:(不推荐)

方法二,实现指定接口,由struts框架运行时注入:public class HelloWorldAction implements ServletRequestAware, ServletResponseAware, ServletContextAware{private HttpServletRequest request;private ServletContext servletContext;private HttpServletResponse response;public void setServletRequest(HttpServletRequest req) {this.request=req;}public void setServletResponse(HttpServletResponse res) {this.response=res;}public void setServletContext(ServletContext ser) {this.servletContext=ser;}}