1. 程式人生 > >Struts2框架的結構分析和簡單的登入示例

Struts2框架的結構分析和簡單的登入示例

吐槽:
初次使用Struts2框架,真的是被搞得有點灰頭土臉。
因為要求的時間緊,就直接去各種部落格查詢相關資料,期望可以能夠通過一個示例程式來快速瞭解Struts的專案結構,不過,我發現絕大多數的部落格文章只是簡單的說明要建立一個struts.xml,把web.xml改寫下,如果是登入示例,就要寫一個login.jsp,2個登陸成功或者失敗時的jsp頁面,之後程式碼一貼就算完了。對於初學者而言,這樣真的和沒說是一樣的,因為初學者並不知道Struts框架的結構,當然也不會知道所說的struts.xml應該放在哪,幾個jsp應該放在哪,以及如何根據放的位置不同來修改程式碼。所以,在我耗費了差不多一天的時間來建立一個簡單的專案後,我覺的我有必要來寫一下我這一天來對struts2結構的理解,幫助和我一樣想要快速瞭解struts2的童鞋。

首先,想要快速搭建一個Struts2框架的辦法就是使用IDE,我所使用的是eclipse+tomcat。關於這個,就不再贅述。想必開發環境大家還是能夠自己配置好的。


進入正題
1.下載struts2的jar包
官方地址是

http://struts.apache.org/下載最新版本即可
選擇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專案就搭建完成了。當然,我們還可以加入資料庫連線來豐富這個專案。