0
回答
struts2中获取request、response,与android客户端进行交互
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

不错的帖子哦

Android项目之——页面特效集合(附源码)
http://www.eoeandroid.com/thread-188164-1-1.html

五种Android Toast方式
http://www.eoeandroid.com/thread-187288-1-1.html

Android Mapview地图显示实例
http://www.eoeandroid.com/thread-186739-1-1.html

-------------------帖子正文--------------------

用struts2作为服务器框架,与android客户端进行交互需要得到request、response对象。

struts2中获取request、response有两种方法。

第一种:利用ServletActionContext的静态方法

Struts2利用ServletActionContext类来维护Servlet对象,ServletActionContext利用ThreadLocal来维护不同线程的Servlet对象,因此可以使用ServletActionContext类获取,这种方法可以叫做非注射方式(非IoC方式)。

public class LoginAction extends ActionSupport { private static final long serialVersionUID = 1L ; private String account; // 账号 private String pwd; // 密码 public String login() throws Exception{ // 获取request HttpServletRequest request= ServletActionContext.getRequest(); // 获取response HttpServletResponse response= ServletActionContext.getResponse(); // 获取Session HttpSession session=request.getSession( true ); // 放到session中 session.setAttribute("account" , account); // 获得上下文 ServletContext context= ServletActionContext.getServletContext(); // 获取upload文件夹 File uploadFile= new File(context.getRealPath("upload" )); // 给客户端返回结果 PrintWriter writer= response.getWriter(); writer.print("account" ); return execute(); } }

第二种:利用相关的Aware接口

Struts2提供Aware接口,实现了相关Aware接口的Action能够感知相应的资源。Struts在实例化一个Action事例中,如果发现它实现了相应的Aware接口,会把相应的资源通过Aware接口方法注射进去,这种方法可以叫做注射方式(IoC方式)。

public class ServletAwareAction extends ActionSupport implements ServletRequestAware, ServletResponseAware, SessionAware, ServletContextAware { private static final long serialVersionUID = 1L ; private ServletContext application; // Servlet上下文 private HttpServletRequest request; // request对象 private HttpServletResponse response; // response对象 private Map<String, Object> session; // session对象 public void setServletRequest(HttpServletRequest request) { this.request= request; } public void setServletResponse(HttpServletResponse response) { this.response= response; } public void setSession(Map<String, Object> session) { this.session= session; } public void setServletContext(ServletContext application) { this.application= application; } public String execute(){ String upload=application.getRealPath("upload" ); request.getRemoteAddr(); response.getContentType(); session.get("account" ); return Action.SUCCESS; }

Aware接口其实是一种拦截器,拦截器代码会在执行Action之前执行,将相关的Servlet对象设置进去

 

 


原文链接:http://www.cnblogs.com/vus520/archive/2012/08/16/2641936.html
举报
长平狐
发帖于5年前 0回/353阅
顶部