前面的文章,介紹了Struts2的工作原理以及與Struts1的區別,理論的東西明白了,下邊就該實踐了。我們以登錄爲例,來進行學習。
項目的總體結構
聲明:採用的Struts2版本爲:struts-2.1.8.1-all
1、首先,創建Java Web項目
2、引入Struts2相關的依賴包,將依賴包拷貝到WEB-INF/lib下
3、在web.xml文件中,配置StrutsPrepareAndExecuteFilter
新建的JavaWeb項目中,可能不存在web.xml文件,需要我們手動創建。創建完畢後,關於裏邊的配置,我們可以找到下載的Struts2包,然後找到struts-2.1.8.1\apps\struts2-blank-2.1.8.1\WEB-INF下的web.xml文件,裏邊有基本的配置,可以直接拷貝過來。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<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>
4、建立相關的JSP頁面(login.jsp、login_success.jsp、login_error.jsp)
登錄界面:login.sjp
<%@ page language="java" import="java.util.*" 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=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="login.action">
用戶:<input type="text" name="username"><br>
密碼:<input type="password" name="password"><br>
<input type="submit" value="登錄">
</form>
</body>
</html>
登錄成功界面:login_success.jsp
<%@ page language="java" import="java.util.*" 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=GB18030">
<title>Insert title here</title>
</head>
<body>
${username },登錄成功
</body>
</html>
登錄失敗界面:login_error.jsp
<%@ page language="java" import="java.util.*" 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=GB18030">
<title>Insert title here</title>
</head>
<body>
登錄失敗
</body>
</html>
5、創建Struts2登錄的Action:LoginAction
Struts2的Action可以不用繼承Struts2框架中的任何類,也不用實現Struts2框架中的任何接口。Struts2的Action可以是一個POJO。同時,在Action中提供getter和setter方法,便於數據的收集。
package com.tgb.struts2;
/**
* Struts2登錄Action
* @author Kirn
*
*/
public class LoginAction
{
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;
}
//用戶名、密碼都設定爲admin
public String execute() throws Exception {
if ("admin".equals(username) && "admin".equals(password)) {
return "success";
}else {
return "error";
}
}
}
6、在src下,新建Struts2的配置文件:struts.xml。在裏邊進行Action與JSP的配置。
關於struts.xml文件中的具體配置,可以參考Struts2包中,struts-2.1.8.1\apps\struts2-blank-2.1.8.1\WEB-INF\src\java目錄下的struts.xml。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 當struts.xml配置文件發生修改,會立刻加載,在生產環境下最好不要配置 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 會提供更加友好的提示信息 -->
<constant name="struts.devMode" value="true"/>
<!-- 需要繼承struts-default包,這樣就擁有的最基本的功能 -->
<package name="struts2" extends="struts-default">
<action name="login" class="com.tgb.struts2.LoginAction">
<result name="success">/login_success.jsp</result>
<result name="error">/login_error.jsp</result>
</action>
</package>
</struts>
OK,到這我們就實現了採用Struts2框架的用戶登錄Demo。就這樣從初步的學習,到簡單Demo的實現。相信,隨着學習的深入,對Struts2的理解會更加深刻。
紙上得來終覺淺,絕知此事要躬行。共勉!