Struts2框架的結構分析和簡單的登入示例
吐槽:
初次使用Struts2框架,真的是被搞得有點灰頭土臉。
因為要求的時間緊,就直接去各種部落格查詢相關資料,期望可以能夠通過一個示例程式來快速瞭解Struts的專案結構,不過,我發現絕大多數的部落格文章只是簡單的說明要建立一個struts.xml,把web.xml改寫下,如果是登入示例,就要寫一個login.jsp,2個登陸成功或者失敗時的jsp頁面,之後程式碼一貼就算完了。對於初學者而言,這樣真的和沒說是一樣的,因為初學者並不知道Struts框架的結構,當然也不會知道所說的struts.xml應該放在哪,幾個jsp應該放在哪,以及如何根據放的位置不同來修改程式碼。所以,在我耗費了差不多一天的時間來建立一個簡單的專案後,我覺的我有必要來寫一下我這一天來對struts2結構的理解,幫助和我一樣想要快速瞭解struts2的童鞋。
首先,想要快速搭建一個Struts2框架的辦法就是使用IDE,我所使用的是eclipse+tomcat。關於這個,就不再贅述。想必開發環境大家還是能夠自己配置好的。
進入正題
1.下載struts2的jar包
官方地址是
選擇struts-x.xxxx-all下載,下載後解壓,可以從lib資料夾中獲取所需的jar包
2.建立web專案
如果使用的是Myeclipse,就新建web 專案,eclipse就新建Dynamic web專案,兩者本身是沒什麼太大區別的
新建完後的專案結構是這樣的
注意我點開的部分,對於一個簡單的示例,所涉及的也就是我點開的那些
3.將Struts2的jar包匯入到專案中
包為下面的幾個
注意包放的位置 WEB-INF/lib 只要複製黏貼進去就可以了,ojdbc14.jar可以忽略,這是我之後連線資料庫時用的包
4.導完包以後就可以開始建立struts.xml檔案了,對於這個的放置,倒是有很多說法,我是選擇放在src下的,直接在src下新建struts.xml檔案
5.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>
<package name="text" extends="struts-default">
<action name ="login" class="com.LoginAction">
<result name="success">JSP/welcome.jsp</result>
<result name="error">JSP/error.jsp</result>
</action>
</package>
</struts>
這裡要說明下,package中name為這個package的名字,可以自己任取,後面的extends相信大家不會陌生,就是繼承了struts-default這個類
;action中的name為這個活動(action)的名字,注意,這之後jsp中form表單提交時的action就是根據該名稱來查詢的。class就是這個活動發生的檔案的實體地址。
6.完成struts.xml檔案後,就可以按照這個檔案定義的來繼續搭建了,
首先要建立一個login.jsp用來引用該活動(就是初始的登入頁面),在WebContent資料夾中建立login.jsp,當然,在WebContent中建立一個資料夾再在這個資料夾中建立login.jsp也是可以的,就是會對之後的一些程式碼有影響
login.jsp程式碼
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登入介面</title>
</head>
<body>
<form action="login" method="post">
使用者名稱:<input name="username"><br>
密 碼:<input type="password" name="userpass"><br>
<input type="submit" value="提 交">
<input type="reset" value="取 消">
</form>
</body>
</html>
對於jsp程式碼,相信我也不需要多講,很簡單的一個頁面,2個輸入框(使用者名稱,密碼),一個提交按鈕,一個重置按鈕。
7.建立完login.jsp頁面後,再建立2個頁面,分別是登入成功時的頁面和失敗時的頁面,建立的位置如下(JSP/error.jsp and welcome.jsp)
error.jsp程式碼
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<font color="red" size="10">使用者或密碼錯誤!</font>
</body>
</html>
welcome.jsp程式碼
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>歡迎</title>
</head>
<body>
<font color="red" size="10">登入成功!</font>
</body>
</html>
8.jsp頁面都建立完成後,就可以開始著手建立事件處理檔案了
LoginAction.java。位置在src下,自己建個包放裡面就可以了(我建的是com包),當然,如果這裡放的位置改了的話,相應的,需要修改struts.xml中的相應部分
LoginAction.java程式碼
package com;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private String username;
private String userpass;
public String execute(){
if("sss".equals(username)&&"12345".equals(userpass)){
return SUCCESS;
}else{
return ERROR;
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpass() {
return userpass;
}
public void setUserpass(String userpass) {
this.userpass = userpass;
}
}
9.好了,最後只需要修改一下web.xml檔案就大功告成了
web.xml
<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.jsp</welcome-file>
</welcome-file-list>
這裡說明一下,前2段是struts2必不可少的部分,第三段是為了在執行專案時,將首頁設定為login.jsp。也就是執行時將會首先跳轉到login.jsp頁面。
以上,一個簡單的struts2專案就搭建完成了。當然,我們還可以加入資料庫連線來豐富這個專案。