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

struts2中获取request、response,与android客户端进行交互(文件传递给客户端)

2015-04-26 21:21 375 查看
用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对象设置进去
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐