zoukankan      html  css  js  c++  java
  • Struts2-lesson2

    最好的学习方式是断点调试框架源码

    四种结果处理方式

    请求转发(它悄悄替我们找hello.jsp借了钱)

    http://localhost:8080/test_struts2/hello/Demo1_Action.action

    请求重定向(它让我们去找hello.jsp借钱)

    http://localhost:8080/test_struts2/hello/Demo2_Action.action

    转发到Action

    http://localhost:8080/test_struts2/hello/Demo3_Action.action

    重定向到Action

    http://localhost:8080/test_struts2/hello/Demo4_Action.action

    获得servletAPI

    通过ActionContext方式获得

    import java.util.Map;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    //如何在action中获得原生ServletAPI
    public class Demo5_Action extends ActionSupport {
    
        public String execute() throws Exception {
            //request域=> map (struts2并不推荐使用原生request域)
            //不推荐
            Map<String, Object> requestScope = (Map<String, Object>) ActionContext.getContext().get("request");
            //推荐
            ActionContext.getContext().put("name", "requestTom");
            //session域 => map
            Map<String, Object> sessionScope = ActionContext.getContext().getSession();
            sessionScope.put("name", "sessionTom");
            //application域=>map
            Map<String, Object> applicationScope = ActionContext.getContext().getApplication();
            applicationScope.put("name", "applicationTom");
            
            return SUCCESS;
        }
     
    }

    http://localhost:8080/test_struts2/hello/Demo5_Action.action

    通过ServletActionContext方式获得

    import java.util.Map;
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    //如何在action中获得原生ServletAPI
    public class Demo6_Action extends ActionSupport {
        //并不推荐
        public String execute() throws Exception {
            //原生request
            HttpServletRequest request = ServletActionContext.getRequest();
            //原生session
            HttpSession session = request.getSession();
            //原生response
            HttpServletResponse response = ServletActionContext.getResponse();
            //原生servletContext
            ServletContext servletContext = ServletActionContext.getServletContext();
            return SUCCESS;
        }
    }

    实现Aware接口的方式获得

    import java.util.Map;
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.interceptor.ServletRequestAware;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    //如何在action中获得原生ServletAPI
    public class Demo7_Action extends ActionSupport implements ServletRequestAware {
    
        private HttpServletRequest request;
    
        public String execute() throws Exception { 
            System.out.println("原生request:"+request);
            return SUCCESS;
        }
    
        @Override
        public void setServletRequest(HttpServletRequest request) {
            this.request = request;
        }
    
    }

    http://localhost:8080/test_struts2/hello/Demo7_Action.action

    参数获得方式

    action生命周期&线程安全&MVC

    http://localhost:8080/test_struts2/form1.jsp

    (正确输入日期格式2020-04-27)

    MVC设计思想   与  JavaEE三层架构

    前者是设计思想

    后者是解决方案

    StrutsMVC

    对象驱动&模型驱动

    http://localhost:8080/test_struts2/form2.jsp

    http://localhost:8080/test_struts2/form3.jsp

    集合类型参数封装

    http://localhost:8080/test_struts2/form4.jsp

    练习

    (jar重复,删除版本低的)

    http://localhost:8080/test_struts2/jsp/customer/add.jsp

    击石乃有火,不击元无烟!!
  • 相关阅读:
    DRF项目创建流程(1)
    RESTful API规范
    超哥笔记--shell 基本命令(4)
    转:django模板标签{% for %}的使用(含forloop用法)
    自定django登录跳转限制
    jquery Ajax应用
    js重定向跳转页面
    django项目mysql中文编码问题
    python进阶(六) 虚拟环境git clone报错解决办法
    Linux基础(六) Vim之vundle插件
  • 原文地址:https://www.cnblogs.com/rain2020/p/12780689.html
Copyright © 2011-2022 走看看