• Struts03---参数传递


    package cn.bdqn.bean;
    
    /**
     * 
     *用户的实体类
     */
    public class User {
     
        private  String  name;
        private  String  password;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public User(String name, String password) {
            super();
            this.name = name;
            this.password = password;
        }
        public User() {
            super();
        }
        
        
    }
    User实体类

    一:前台传递单个属性

    01.创建登录界面

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
      </head>
      
      <body>
       <form action="user/login" method="post">
           <table>
                <tr>
                   <td>用户名:</td>
                   <td><input  type="text" name="name"/></td>
                </tr>
                <tr>
                   <td>密码:</td>
                   <td><input  type="password" name="password"/></td>
                </tr>
                <tr>
                   <td></td>
                   <td><input  type="submit" value="登录"/></td>
                </tr>
           </table>
       </form>
      </body>
    </html>

    02.在struts.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="default"  namespace="/user" extends="struts-default">
            <!--用户登录的action  -->
            <action name="login" class="cn.bdqn.action.LoginAction">
               <!--如果返回值是success,则可以省略name属性  -->
                <result name="success">/loginSuccess.jsp</result>
            </action>
        </package>
    </struts>

    03.创建对应的Action

    package cn.bdqn.action;
    
    import cn.bdqn.bean.User;
    
    import com.opensymphony.xwork2.ActionSupport;
    /**
     * 
     *  用户登录的action
     */
    public class LoginAction extends ActionSupport {
    
        /**
         * 01.定义和表单中name属性值一致的成员变量,并且具有get和set
         */
        private  String  name;
        private  String  password;
        
        
        @Override
        public String execute() throws Exception {
            System.out.println("用户名:"+name);
            System.out.println("密码:"+password);
            return "success"; //"success"    SUCCESS  super.execute()
        }
        
        public String getName() {
            return name;
        }
        
        public void setName(String name) {
            this.name = name;
        }
        
        public String getPassword() {
            return password;
        }
        
        public void setPassword(String password) {
            this.password = password;
        }
        
        
    
    }

    04.创建登录成功 页面

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'success.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <body>
      =============== 通过el表达式获取后台的数据     默认的作用是 request===============<br/>
      ${requestScope.name} <br/>
      ${password}<br/>
      
       =============== 通过struts2的标签获取===============<br/>
       <s:property value="name"/><br/>
       <s:property value="password"/><br/>
       
       <s:debug/>
        
      </body>
    </html>

    二:前台传递对象

     修改login.jsp页面

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
      </head>
      
      <body>
       <form action="user/login" method="post">
           <table>
                <tr>
                   <td>用户名:</td>
                   <td><input  type="text" name="user.name"/></td>
                </tr>
                <tr>
                   <td>密码:</td>
                   <td><input  type="password" name="user.password"/></td>
                </tr>
                <tr>
                   <td></td>
                   <td><input  type="submit" value="登录"/></td>
                </tr>
           </table>
       </form>
      </body>
    </html>

    02.struts.xml文件中的代码不需要改变

    03.修改LoginAction中的代码

    package cn.bdqn.action;
    
    import cn.bdqn.bean.User;
    
    import com.opensymphony.xwork2.ActionSupport;
    /**
     * 
     *  用户登录的action
     */
    public class LoginAction extends ActionSupport {
    
        /**
         * 02.直接定义前台表单中的对象!并且具有get和set!  这是我们常使用的方式
         */
        private User user;
    
        
        @Override
        public String execute() throws Exception {
            System.out.println("用户名:"+user.getName());
            System.out.println("密码:"+user.getPassword());
            return "success"; //"success"    SUCCESS  super.execute()
        }
    
        public User getUser() {
            return user;
        }
    
    
        public void setUser(User user) {
            this.user = user;
        }
    
    
        
        
        
    
    }

    04.修改loginSuccess.jsp页面

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'success.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <body>
      =============== 通过el表达式获取后台的数据     默认的作用是 request===============<br/>
      ${requestScope.user.name} <br/>
      ${user.password}<br/>
      
       =============== 通过struts2的标签获取===============<br/>
       <s:property value="user.name"/><br/>
       <s:property value="user.password"/><br/>
       
       <s:debug/>
        
      </body>
    </html>

    三:实现ModelDriven接口

    其他代码和单个属性传递 一致!

    只需要更改LoginAction中的代码即可!

    package cn.bdqn.action;
    
    import cn.bdqn.bean.User;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    /**
     *  用户登录的action
     */
    public class LoginAction extends ActionSupport implements ModelDriven {
    
        /**
         * 03.实现ModelDriven   前台的name属性值 必须要和user对象中的属性名一致!不需要user.
         */
        private User user=new User();
    
        
        @Override
        public String execute() throws Exception {
            System.out.println("用户名:"+user.getName());
            System.out.println("密码:"+user.getPassword());
            return "success"; //"success"    SUCCESS  super.execute()
        }
    
        @Override
        public Object getModel() {
            return user;
        }
    
    
        
        
        
    
    }

    Struts.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>
    <!--  struts2的默认扩展名 
    struts.action.extension=action,,
    01.以action结尾   02.什么都不写
    <constant name="struts.action.extension" value="do,t10"/>
    
    ### - struts.i18n.reload = true
    ### - struts.configuration.xml.reload = true
     struts.devMode = false //手动重启
     
     01.开发模式: 修改代码多    struts.devMode =true   自动重启
     02.生产模式: 项目发布       struts.devMode = false 手动重启
     -->
     <constant name="struts.devMode" value="true"/><!--  设置开发模式  -->
        <package name="default"  namespace="/user" extends="struts-default">
            <!--用户登录的action  -->
            <action  name="login" class="cn.bdqn.action.LoginAction">
               <!--如果返回值是success,则可以省略name属性  
                 type:的默认值 是转发!
                                                            怎么验证转发?
                     看浏览器中的url是不是action的属性值!是!就是转发!
                     如果是 loginSuccess.jsp说明是重定向!                                                
                 type="redirect":重定向!
               -->
                <result name="success">/loginSuccess.jsp</result>
            </action>
        </package>
    </struts>
  • 相关阅读:
    PAT乙级真题1004. 成绩排名 (20)(解题)
    PAT乙级真题1003. 我要通过!(20)(解题)
    PAT乙级真题1002. 写出这个数 (20)(解题)
    PAT乙级真题1001. 害死人不偿命的(3n+1)猜想 (15)(解题)
    2015-03-06——ajax基础
    2015-03-06——正则表达式基础
    2015-02-09——js笔记
    2015-02-08——js笔记
    2015-02-07——js笔记
    2014-10-28——iframe多层嵌套时获取元素总结
  • 原文地址:https://www.cnblogs.com/xtdxs/p/7097462.html
Copyright © 2020-2023  润新知