整體過程爲:
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>
設置字段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下