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

击石乃有火,不击元无烟!!
原文地址:https://www.cnblogs.com/rain2020/p/12780689.html