当前位置: 代码迷 >> Android >> struts2中获取request、response,与android客户端进展交互(转载)
  详细解决方案

struts2中获取request、response,与android客户端进展交互(转载)

热度:152   发布时间:2016-04-28 02:52:54.0
struts2中获取request、response,与android客户端进行交互(转载)

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

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

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

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

[代码]java代码:
01public class LoginAction extends ActionSupport {
02??
03????????private static final long serialVersionUID = 1L;
04??????????
05????????private String account;//账号
06?????????private String pwd;//密码
07??????????
08????????public String login() throws Exception{
09??????????????????
10????????????????//获取request
11?????????????????HttpServletRequest request=ServletActionContext.getRequest();
12?????????????????//获取response
13?????????????????HttpServletResponse response=ServletActionContext.getResponse();
14?????????????????//获取Session
15?????????????????HttpSession session=request.getSession(true);
16?????????????????//放到session中
17?????????????????session.setAttribute("account", account);
18?????????????????//获得上下文
19?????????????????ServletContext context=ServletActionContext.getServletContext();
20?????????????????//获取upload文件夹
21?????????????????File uploadFile=new File(context.getRealPath("upload"));
22??????????????????
23????????????????//给客户端返回结果
24?????????????????PrintWriter writer=response.getWriter();
25?????????????????writer.print("account");
26??????????????????
27????????????????return execute();
28?????????}
29?}

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

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

[代码]java代码:
01public class ServletAwareAction extends ActionSupport implements
02?????????????????ServletRequestAware, ServletResponseAware, SessionAware, ServletContextAware {
03??
04????????private static final long serialVersionUID = 1L;
05??
06????????private ServletContext application;//Servlet上下文
07?????????private HttpServletRequest request;//request对象
08?????????private HttpServletResponse response;//response对象
09?????????private Map<String, Object> session;//session对象
10??????????
11????????public void setServletRequest(HttpServletRequest request) {
12?????????????????this.request=request;
13?????????}
14??
15????????public void setServletResponse(HttpServletResponse response) {
16?????????????????this.response=response;
17?????????}
18??
19????????public void setSession(Map<String, Object> session) {
20?????????????????this.session=session;
21?????????}
22??
23????????public void setServletContext(ServletContext application) {
24?????????????????this.application=application;
25?????????}
26??
27????????public String execute(){
28?????????????????String upload=application.getRealPath("upload");
29??????????????????
30????????????????request.getRemoteAddr();
31?????????????????response.getContentType();
32?????????????????session.get("account");
33??????????????????
34????????????????return Action.SUCCESS;
35?????????}

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

  相关解决方案