用struts2作为服务器框架,与android客户端进行交互需要得到request、response对象。
struts2中获取request、response有两种方法。
第一种:利用ServletActionContext的静态方法
Struts2 利用ServletActionContext类来维护Servlet对象,ServletActionContext利用ThreadLocal来维护 不同线程的Servlet对象,因此可以使用ServletActionContext类获取,这种方法可以叫做非注射方式(非IoC方式)。
[代码]java代码:
01 | public 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代码:
01 | public 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对象设置进去
相关推荐
当我们手机需要和服务器进行交互时,服务器端的代码。 采用了struts技术。HttpServletRequest HttpServletResponse 以最简单的this.response.getWriter().write(result); 进行服务器端返回。此时与服务器的交互流量...
在通常的web开发中Request和Response对象比较常见,但在Struts2框架中由于Action能与JSP页面进行数据交互,所以通常都不会用到这两个对象。如果想在Struts2程序中用到这两个对象,也有解决方法 Struts2的Action并未...
系统的基本业务流程是: 在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action...
8.3.1 Struts2的获取与放置 8.3.2 第一个Struts2程序 8.4 Action对象 8.4.1 认识Action对象 8.4.2 请求参数的注入原理 8.4.3 Action的基本流程 8.4.4 什么是动态Action 8.4.5 动态Action的应用 8.5 Struts2的配置...
LobHandler必须注入到Hibernate会话工厂sessionFactory中,因为sessionFactory负责产生与数据库交互的Session。LobHandler的配置如代码 5所示: 代码 5 Lob字段的处理句柄配置 1. 2. … 3. 4. class="org....
如果需要,Struts2 Action仍然可以访问初始的Request和Response。 但是,其他的元素减少或者消除了直接访问HttpServletRequest和HttpServletResponse的必要性。 d、可测性 测试struts1.2 Action的一个主要问题是...
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 20、EJB与JAVA BEAN的区别? Java Bean 是可复用...
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 23、EJB与JAVA BEAN的区别? Java Bean 是可...
4.5、交互性 4.6、本章摘要 4.7、开发实战讲解 第5章 JSP基础语法 5.1、JSP注释 5.2、Scriptlet 5.2.1、第一种Scriptlet: 5.2.2、第二种Scriptlet:!%> 5.2.3、第三种Scriptlet: 5.3、Scriptlet标签 5.4...
6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得Session Id 6.5.2、登陆及注销 6.5.3、判断新用户 6.5.4、取得用户的操作时间 6.6、...
4.5、交互性 4.6、本章摘要 4.7、开发实战讲解 第5章 JSP基础语法 5.1、JSP注释 5.2、Scriptlet 5.2.1、第一种Scriptlet: 5.2.2、第二种Scriptlet:!%> 5.2.3、第三种Scriptlet: 5.3、Scriptlet标签 5.4...
4.5、交互性 4.6、本章摘要 4.7、开发实战讲解 第5章 JSP基础语法 5.1、JSP注释 5.2、Scriptlet 5.2.1、第一种Scriptlet: 5.2.2、第二种Scriptlet:!%> 5.2.3、第三种Scriptlet: 5.3、Scriptlet标签 5.4...
4.5、交互性 4.6、本章摘要 4.7、开发实战讲解 第5章 JSP基础语法 5.1、JSP注释 5.2、Scriptlet 5.2.1、第一种Scriptlet: 5.2.2、第二种Scriptlet:!%> 5.2.3、第三种Scriptlet: 5.3、Scriptlet标签 5.4...
4.5、交互性 4.6、本章摘要 4.7、开发实战讲解 第5章 JSP基础语法 5.1、JSP注释 5.2、Scriptlet 5.2.1、第一种Scriptlet: 5.2.2、第二种Scriptlet:!%> 5.2.3、第三种Scriptlet: 5.3、Scriptlet标签 5.4...
4.5、交互性 4.6、本章摘要 4.7、开发实战讲解 第5章 JSP基础语法 5.1、JSP注释 5.2、Scriptlet 5.2.1、第一种Scriptlet: 5.2.2、第二种Scriptlet:!%> 5.2.3、第三种Scriptlet: 5.3、Scriptlet标签 5.4...
4.5、交互性 4.6、本章摘要 4.7、开发实战讲解 第5章 JSP基础语法 5.1、JSP注释 5.2、Scriptlet 5.2.1、第一种Scriptlet: 5.2.2、第二种Scriptlet:!%> 5.2.3、第三种Scriptlet: 5.3、Scriptlet标签 5.4...