struts學習之用戶登錄

整體過程爲:

1、新建dynamical web project工程

2、拷貝jar包到WEB-INF lib文件夾下

3、web.xml文件添加核心過濾器攔截用戶請求

4、定義jsp文件(.jsp)

5、定義處理用戶的Action類(.java)

6、配置Action(struts.xml)

7、配置處理結果與物理視圖資源之間的對應關係

  (Action.java處理用戶請求結束後,會返回一個處理結果,通常是字符串;)

8、編寫對應的視圖資源(相應跳轉的.jsp文件)

具體如下:


1、在java EE下新建dynamical web project工程

2、拷貝jar包到WEB-INF lib文件夾下
jar包爲...\struts-2.3.24.1-all\struts-2.3.24.1\apps 中的struts2-blank.war,WEB-INF lib文件夾中所有jar包
3、web.xml文件添加核心過濾器,做爲前端控制器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>login</display-name>
  <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>
  <welcome-file-list>
    <welcome-file>login.html</welcome-file>
  </welcome-file-list>
</web-app>

4、新建login.jsp

設置action name爲login,方法爲post,默認方法爲get,會在url中顯示用戶的用戶名和密碼——不安全;

該jsp文件會經過web.xml中的過濾器過濾,得到該action傳來的參數name和password


<%@ page language="java" contentType="text/html; charset=GBK"
	pageEncoding="GBK"%>
<%@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=GBK">
<title><s:text name="loginPage"/></title>
</head>
<body>
<h2>please login!</h2>
<center>
<form action="login" method="post">
	name:<input type="text" name="name"/><br/>
	password:<input type="password" name="password"/><br/>
	<input type="submit" value="submit"/>
</form>
</center>
</body>
</html>


5、新建LoginAction.java

設置字段name和password,與jsp中的變量名相匹配。

默認執行execute方法:用戶通過login.jsp提交的name和password被捕獲,並提交給LoginAction中的Execute方法,該name和password與指定的用戶名和密碼進行匹配,如果匹配返回“success”結果字段,或者返回“error”結果字段——這時與struts.xml中的result相匹配,並調到相應的jsp頁面。

package testWeb;

public class LoginAction {
	private String name;
	private String password;
	
	public String execute() throws Exception{
		if(getName().equals("zhaod")
				&&getPassword().equals("zhaod")){
			return "success";
		}else{
			return "input";
		}
		
	}
	
	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;
	}
	
	

}

6、struts.xml

指定package;

指定action的name,以及相關聯的類:注意類名前需要有相應的包名,用.隔開;

獲取該action的result,並根據Action的Execute方法返回的結果,調到相應的jsp頁面

<?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="testWeb" namespace="/" extends="struts-default">
		<action name="login" class="testWeb.LoginAction">
			<result name="input">/login.jsp</result>
			<result name="error">/login.jsp</result>
			<result name="success">/WEB-INF/content/welcome.jsp</result>
		</action>
		<action name="*">
			<result>/WEB-INF/content/{1}.jsp</result>
		</action>    
    </package>

    <!-- Add packages here -->

</struts>

實現效果爲:

用戶輸入用戶名和密碼,只有當輸入的用戶名和密碼與指定的用戶名密碼匹配時,才調到歡迎頁面。


整體的框架爲:


其中:login.jsp在WebContent下

welcome.jsp在WEB-INF/content下

web.xml在WEB-INF下

LoginAction.java在src/testWeb下

struts.xml在src下




  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章