• Struts2基础学习2


    Struts2基础学习2

    项目结构,测试页面与实体类

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        request: ${requestScope.name}<br>
        session:${sessionScope.name}<br>
        application:${applicationScope.name}<br>
    </body>
    </html>
    api
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="${pageContext.request.contextPath}/Demo3Action">
            用户名:<input type="text" name="name" /><br>
            年龄:<input type="text" name="age" /><br>
            生日:<input type="text" name="birthday" /><br>
            <input type="submit" value="提交" />
        </form>
    </body>
    </html>
    form1
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="${pageContext.request.contextPath}/Demo4Action">
            用户名:<input type="text" name="user.name" /><br>
            年龄:<input type="text" name="user.age" /><br>
            生日:<input type="text" name="user.birthday" /><br>
            <input type="submit" value="提交" />
        </form>
    </body>
    </html>
    form2
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="${pageContext.request.contextPath}/Demo5Action">
            用户名:<input type="text" name="name" /><br>
            年龄:<input type="text" name="age" /><br>
            生日:<input type="text" name="birthday" /><br>
            <input type="submit" value="提交" />
        </form>
    </body>
    </html>
    form3
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="${pageContext.request.contextPath}/Demo6Action" method="post" >
            list:<input type="text" name="list" /><br>
            list:<input type="text" name="list[3]" /><br>
            map:<input type="text" name="map['key']" /><br>
            <input type="submit" value="提交" />
        </form>
    </body>
    </html>
    form4
    package com.struts2.pojo;
    
    import java.util.Date;
    
    /**
     * @author: 肖德子裕
     * @date: 2018/11/20 18:39
     * @description:
     */
    public class User {
        private String name;
        private Integer age;
        private Date birthday;
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        @Override
        public String toString() {
            return "User [name=" + name + ", age=" + age + ", birthday=" + birthday + "]";
        }
    }
    User

    测试Struts2的重定向与转发

    package com.struts2.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    /**
     * @author: 肖德子裕
     * @date: 2018/11/20 10:25
     * @description: 测试重定向与转发
     * 之所以继承ActionSupport类,是因为该类实现了很多接口,我们可以直接使用
     */
    public class Demo1Action extends ActionSupport {
    
        public String index() throws Exception{
            System.out.println("hello1");
            return SUCCESS;
        }
    
        public String index2() throws Exception{
            System.out.println("hello2");
            return SUCCESS;
        }
    
        public String index3() throws Exception{
            System.out.println("hello3");
            return SUCCESS;
        }
    
        public String index4() throws Exception{
            System.out.println("hello4");
            return SUCCESS;
        }
    }
    Demo1Action

    测试Struts2获取servlet api

    package com.struts2.action;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import org.apache.struts2.ServletActionContext;
    
    import java.util.Map;
    
    /**
     * @author: 肖德子裕
     * @date: 2018/11/20 14:05
     * @description: 测试struts2获取原生servlet api
     * 每次请求都会创建一个ActionContext对象(数据中心),请求结束时销毁
     * 可以通过该对象获取servlet api
     * 也可以通过ServletActionContext对象获取api(不推荐)
     * 也可以通过实现相应的接口获取(不推荐)
     * 3种方式都是从ActionContext中获取相应api
     */
    public class Demo2Action extends ActionSupport {
        /**
         * 在本地线程ThreadLocal上绑定了创建的ActionContext对象
         */
        public String test() throws Exception{
            //获取request(不推荐使用)
            Map<String, Object> requestScope = (Map<String, Object>) ActionContext.getContext().get("request");
    
            //可以直接保存值到request(推荐)
            ActionContext.getContext().put("name","request");
    
            //获取session
            Map<String, Object> sessionScope = ActionContext.getContext().getSession();
            sessionScope.put("name","session");
    
            //获取application
            Map<String, Object> applicationScope = ActionContext.getContext().getApplication();
            applicationScope.put("name","application");
    
            return SUCCESS;
        }
    
    }
    Demo2Action

    测试Struts2获取参数的方式

    package com.struts2.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    import java.util.Date;
    
    /**
     * @author: 肖德子裕
     * @date: 2018/11/20 14:39
     * @description: 测试struts2属性获取参数
     * 每次请求都会创建一个新的action实例对象
     * servlet是线程不安全的;action是线程安全的,可以使用成员变量接收参数
     * 参数支持自动转换,如字符串转日期,字符串转int
     */
    public class Demo3Action extends ActionSupport {
        private String name;
        private Integer age;
        private Date birthday;
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getParam(){
            System.out.println(name+" "+age+" "+birthday);
            return SUCCESS;
        }
    }
    Demo3Action
    package com.struts2.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.struts2.pojo.User;
    
    /**
     * @author: 肖德子裕
     * @date: 2018/11/20 18:40
     * @description: 测试struts2对象获取参数
     */
    public class Demo4Action extends ActionSupport {
        private User user;
    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    
        public String getParam(){
            System.out.println(user);
            return SUCCESS;
        }
    }
    Demo4Action
    package com.struts2.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    import com.struts2.pojo.User;
    
    /**
     * @author: 肖德子裕
     * @date: 2018/11/20 18:47
     * @description: 测试struts2模型驱动获取参数
     */
    public class Demo5Action extends ActionSupport implements ModelDriven<User> {
        private User user=new User();
    
        public String getParam(){
            System.out.println(user);
            return SUCCESS;
        }
    
        @Override
        public User getModel() {
            return user;
        }
    }
    Demo5Action
    package com.struts2.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author: 肖德子裕
     * @date: 2018/11/20 19:05
     * @description: 封装集合类型参数
     */
    public class Demo6Action extends ActionSupport {
        private List<String> list;
        private Map<String,String> map;
    
        public List<String> getList() {
            return list;
        }
    
        public void setList(List<String> list) {
            this.list = list;
        }
    
        public Map<String, String> getMap() {
            return map;
        }
    
        public void setMap(Map<String, String> map) {
            this.map = map;
        }
    
        public String getParams(){
            System.out.println(list);
            System.out.println(map);
            return SUCCESS;
        }
    }
    Demo6Action

    核心配置文件(注意web.xml中要配置过滤器)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    
        <package name="demo1" namespace="/" extends="struts-default" >
            <!-- 测试转发(默认) -->
            <action name="Demo1Action" class="com.struts2.action.Demo1Action" method="index" >
                <result name="success" type="dispatcher" >/index.jsp</result>
            </action>
            <!-- 测试重定向 -->
            <action name="Demo1Action2" class="com.struts2.action.Demo1Action" method="index2" >
                <result name="success" type="redirect" >/index.jsp</result>
            </action>
            <!-- 测试链式转发跳转 -->
            <action name="Demo1Action3" class="com.struts2.action.Demo1Action" method="index3" >
                <result name="success" type="chain" >
                    <param name="namspace">/</param>
                    <param name="actionName">Demo1Action</param>
                </result>
            </action>
            <!-- 测试链式重定向 -->
            <action name="Demo1Action4" class="com.struts2.action.Demo1Action" method="index4" >
                <result name="success" type="redirectAction" >
                    <param name="namspace">/</param>
                    <param name="actionName">Demo1Action</param>
                </result>
            </action>
        </package>
    
        <package name="demo2" namespace="/" extends="struts-default" >
            <!-- 测试获取servlet api -->
            <action name="Demo2Action" class="com.struts2.action.Demo2Action" method="test" >
                <result name="success" type="dispatcher" >/api.jsp</result>
            </action>
        </package>
    
        <package name="demo3" namespace="/" extends="struts-default" >
            <!-- 测试属性获取参数 -->
            <action name="Demo3Action" class="com.struts2.action.Demo3Action" method="getParam" >
                <result name="success" type="dispatcher" >/form1.jsp</result>
            </action>
        </package>
    
        <package name="demo4" namespace="/" extends="struts-default" >
            <!-- 测试对象获取参数 -->
            <action name="Demo4Action" class="com.struts2.action.Demo4Action" method="getParam" >
                <result name="success" type="dispatcher" >/form2.jsp</result>
            </action>
        </package>
    
        <package name="demo5" namespace="/" extends="struts-default" >
            <!-- 测试模型驱动获取参数 -->
            <action name="Demo5Action" class="com.struts2.action.Demo5Action" method="getParam" >
                <result name="success" type="dispatcher" >/form3.jsp</result>
            </action>
        </package>
    
        <package name="demo6" namespace="/" extends="struts-default" >
            <!-- 测试集合获取参数 -->
            <action name="Demo6Action" class="com.struts2.action.Demo6Action" method="getParams" >
                <result name="success" type="dispatcher" >/form4.jsp</result>
            </action>
        </package>
    
    </struts>
    struts2.xml
  • 相关阅读:
    sqlmap使用教程-安装教程
    SQL注入攻击总结
    mysql 创建函数失败解决办法,版本 8.0.26
    【VUE3.0体验】axios引入以及property的替代
    异化的房价周期
    vue使用websoket
    spring依赖注入方式及springBoot如何解决循环依赖
    范型的正确使用
    mysql GROUP_CONCAT使用
    Mybatis-MySQL 中使用IFNUL
  • 原文地址:https://www.cnblogs.com/xdzy/p/9991063.html
Copyright © 2020-2023  润新知