struts2中获取request、response,与android客户端进行交互

不错的帖子哦

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对象设置进去

 

 

posted on   vus520  阅读(840)  评论(1编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!

导航

< 2012年8月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示