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

  • 相关阅读:
    MYSQL 5.7修改密码,登录问题
    linux 系统 cp: omitting directory 问题解决
    闭包函数是什么
    ecshop 前台个人中心修改侧边栏 和 侧边栏显示不全 或 导航现实不全
    ecshop 前台分页
    php 5.3新增的闭包语法介绍function() use() {}
    剖析 Linux hypervisor
    长久的深情能否维系
    私有云的迁移:从VMware到OpenStack
    Openstack 架构简述
  • 原文地址:https://www.cnblogs.com/vus520/p/2641936.html
Copyright © 2020-2023  润新知