zoukankan      html  css  js  c++  java
  • struts2中获取request、response,与android客户端进行交互(文件传递给客户端)

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

  • 相关阅读:
    Yii2框架之旅(三)
    Yii2框架之旅(二)
    Redis本地集群搭建(5版本以上)
    Redis入门笔记
    Java如何使用elasticsearch进行模糊查询--转载
    springboot集成elasticsearch7.6.1,常用api调用,创建,查找,删除索引,crud,高亮。。。--转载
    SpringBoot整合Elasticsearch7.2.0的实现方法-转载
    Spring Webflux 入门 -转载
    java 视频流截屏,形成缩略图
    记录一下 spring boot 线程处理返回数据
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4458410.html
Copyright © 2011-2022 走看看