Struts2 的三种取得参数值的方式

说明:所有配置均在同一个Struts.xml中

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>
    <!-- 动态 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <!-- 开发者模式 -->
    <constant name="struts.devMode" value="true" />
    
    <package name="default" namespace="/" extends="struts-default">
        
        <!-- 第一只去参数值方式, 包括通配符 
        -->
        <action name="login*" class="com.eudsk.action.LoginOneAction" method="{1}">
            <result name="ok">/ok.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
        
        <!-- 第二种取值方式  DomainModel
        <action name="login*" class="com.eudsk.action.DomainModelAction" method="{1}">
            <result name="ok">/ok2.jsp</result>
            <result name="error">/error2.jsp</result>
        </action>
         -->
         
         <!-- 第三种取值方式  ModelDriven
         <action name="login*" class="com.eudsk.action.ModelDrivenAction" method="{1}">
            <result name="ok">/ok.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
        -->
    </package>
</struts>

 1.第一种取值方式,直接取值

login.jsp

<%@ 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="loginlogin" method="post">
        <input type="text" name="username"/><br/>
        <input type="password" name="password"><br/>
        <input type="submit">
    </form>
</body>
</html>

LoginOneAction.java

package com.eudsk.action;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 第一种取值方式
 * @author Maibeli
 *
 */

public class LoginOneAction extends ActionSupport{
    
    private static final long serialVersionUID = 1L;
    private String username;
    private String password;
    
    public String login() {
        String state="";
        if("123".equals(username) && "123".equals(password)) {
            state="ok";
        }else{
            state="error";
        }
        return state;
    }
    //必须要set 与get 方法
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

ok.jsp

<%@ 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>
    登陆成功!!! ${username } | ${password }
</body>
</html>

error.jsp

<%@ 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>
    登录失败!!${username }  | ${password }
</body>
</html>

 

2.第二种取值方式 DomainModel

login2.jsp

<%@ 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="loginlogin" method="post">
        <input type="text" name="user.username"/><br/>
        <input type="password" name="user.password"><br/>
        <input type="submit">
    </form>
</body>
</html>

DomainModelAction.java

package com.eudsk.action;

import com.eudsk.entity.User;
import com.opensymphony.xwork2.ActionSupport;

public class DomainModelAction extends ActionSupport{
    private static final long serialVersionUID = 1L;
    private User user;
    
    public String login() {
        String state="";
        if("123".equals(user.getUsername()) && "123".equals(user.getPassword())) {
            state="ok";
        }else{
            state="error";
        }
        return state;
    }
    
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    
}

ok2.jsp

<%@ 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>
    登陆成功!!! ${user.username } | ${user.password }
</body>
</html>

error2.jsp

<%@ 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>
    登录失败!!${user.username }  | ${user.password }
</body>
</html>

所需实体 User.java

package com.eudsk.entity;

public class User {
    private String username;
    private String password;
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

 

 3. 第三种取值方式 ModelDriven

login.jsp

<%@ 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="loginlogin" method="post">
        <input type="text" name="username"/><br/>
        <input type="password" name="password"><br/>
        <input type="submit">
    </form>
</body>
</html>

ModelDrivenAction.java

package com.eudsk.action;

import com.eudsk.entity.User;
import com.opensymphony.xwork2.ModelDriven;

public class ModelDrivenAction implements ModelDriven<User>{
    private User user = new User();
    
    public String login() {
        String state="";
        if("j06".equals(user.getUsername()) && "123".equals(user.getPassword())) {
            state="ok";
        }else{
            state="error";
        }
        return state;
    }
    
    @Override
    public User getModel() {
        return user;
    }

}

ok.jsp, error.jsp, User.java 与上面第一种方式相同。

posted @ 2016-08-20 19:48  行走在时间之中  阅读(1250)  评论(0编辑  收藏  举报