通過案例說明struts2的工作流程 – JAVA編程語言程序開發技術文章

本文主要是通過一個例子來說明Struts2的一個工作流程。
首先定義一個登錄頁面login.jsp:
[java] 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags" %>     
<!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>登錄頁面</title> 
</head> 
<body> 
    <s:form action="loginUser"> 
        <s:label value="登錄頁面"></s:label> 
        <s:textfield name="user.userName" label="用戶名:"></s:textfield> 
        <s:textfield name="user.name" label="姓名:"></s:textfield> 
        <s:password name="user.password" label="登錄密碼:"></s:password> 
        <s:submit value="登錄"></s:submit> 
    </s:form> 
</body> 
</html> 

定義一個登錄成功跳轉到歡迎頁面welcome.jsp:
[java] 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags"  %>     
<!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>歡迎頁面</title> 
</head> 
<body> 
    歡迎<FONT color="red" style="font-weight: bold" >"<s:property value="user.name"/>"</FONT>登錄系統 
</body> 
</html> 

定義一個用戶實體類User.java:
[java] 
package org.ml.bean; 
 
/**
 * 用戶實體類
 * 
 * @author MuLing
 * 
 */ 
public class User { 
    private String userName;// 用戶名 
    private String name;// 用戶姓名 
    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; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 
 
    public String getName() { 
        return name; 
    } 

定義一個Action:UserAction.java
[java] 
package org.ml.action; 
 
import org.ml.bean.User; 
 
import com.opensymphony.xwork2.ActionSupport; 
 
/**
 * 用戶實體對於的Action
 * 
 * @author MuLing
 * 
 */ 
public class UserAction extends ActionSupport { 
    private static final long serialVersionUID = 1L; 
     
    private User user ; 
 
    /**
     * 自定義login方法
     * 
     * @return
     */ 
    public String login() { 
        if ("admin".equals(user.getUserName()) && "admin".equals(user.getPassword())) { 
            return SUCCESS; 
        } else { 
            return INPUT; 
        } 
    } 
 
    /**
     * @param user the user to set
     */ 
    public void setUser(User user) { 
        this.user = user; 
    } 
 
    /**
     * @return the user
     */ 
    public User getUser() { 
        return user; 
    } 
  
 

Struts2的核心配置strut.xml配置如下:
[html] 
<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> 
<struts> 
    <package name="user" extends="struts-default" > 
        <action name="loginUser" class="org.ml.action.UserAction" method="login"> 
            <result name="success">/welcome.jsp</result> 
            <result name="input">/login.jsp</result> 
        </action> 
    </package> 
</struts>     

還有就是web.xml的配置如下:
[html] 
<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5"  
    xmlns="http://java.sun.com/xml/ns/javaee"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
  <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
  </welcome-file-list> 
  <filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>  
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
    </filter-class> 
  </filter> 
  <filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
  </filter-mapping></web-app> 

上面就是本例涉及的所有文件內容,下面就看一下效果:
進行登錄:

登錄成功:

上面的登錄登錄已經成功,然我們來來看這個登錄的過程:

以上是個人的一個理解,歡迎大傢交流指正!

發佈留言