1. 程式人生 > >使用struts框架的簡單jsp登入頁面

使用struts框架的簡單jsp登入頁面

轉載請註明,來自shhider!

略坑的資料整合課的實驗,讓我們用struts框架寫一個登入頁面。

之前沒接觸過jsp,完全現學現做。搗鼓了好久,終於調通了,記錄下來備忘,也幫助一下其他同學。

一、環境

JDK、Tomcat、MyEclipse

學計算機的jdk應該早裝了,忽略……

Tomcat,jsp網站執行所需的伺服器。建議童鞋們還是下載那個壓縮包版本的,不用安裝,因為一般我們都用的是MyEclipse開發,MyEclipse中直接執行會開啟tomcat伺服器,具體配置後面講。Tomcat隨意解壓在哪裡,當然你自己得知道位置;

MyEclipse,非常強大又肥大的IDE。其實eclipse也行,但是沒有相關外掛會比較麻煩。大家還是下載10版本的吧,我裝的2013,有一些地方不太一樣,有點麻煩……比如,2013版本建立web工程的時候,不要直接finish,點next到後面,要勾選一下create web.xml file

,預設不自動建立,會比較麻煩。

破解的話網上有很多教程,就下載一個crack程式,按網上的流程來就行。

還有幾個開發jsp必要的設定。關聯JDK,選單欄windows > preference > java > installed JREs,點選add,瀏覽到你安裝的jdk目錄,最後勾選上。關聯Tomcat伺服器windows > preference > myeclipse > servers > tomcat ,點選你下載的版本(如果你下載的Tomcat8,而這裡沒有8的話,也可以勾選7的),選中enable,然後瀏覽到你的Tomcat目錄。

印象中必須的應該就是上面兩個,其他設定可以自己摸索一下。對了,這裡工作空間不一定設定到Tomcat的目錄下,隨便哪裡都可以,部署的時候MyEclipse會你部署過去。

二、開始建立你的工程

新建web project,新手的話其中的選項還是看一下比較好,一定要選擇你電腦上的jdk、java EE版本。

匯入struts框架核心檔案。百度一下,到官網下載即可,就是一壓縮包。這個框架使用的方式跟php完全不同,愁死我了……想我們這個簡單的登入頁面,需要以下幾個包(解壓後在lib裡面):

commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.0.4.jar
freemarker-2.3.15.jar
ognl-2.7.3.jar
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
javassist-3.11.0.GA.jar

實驗指導裡少這個包

commons-lang3-3.1.jar(這個包也少了

Ctrl+C後,到MyEclipse裡專案目錄裡貼上,貼上到web-root > web-inf > lib目錄下。這樣struts框架就匯入到你的專案了。

三、配置web.xml

將實驗指導中的程式碼複製,並做了修改後,我的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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	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>Strut2Travel</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<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>
	<servlet>
		<description>This is the description of my J2EE component</description>
		<display-name>This is the display name of my J2EE component</display-name>
		<servlet-name>LoginAction</servlet-name>
		<servlet-class>LoginAction</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>LoginAction</servlet-name>
		<url-pattern>/servlet/LoginAction</url-pattern>
	</servlet-mapping>
</web-app>

這裡要提的幾個是,filter-class標籤,根據百度,struts2.1之後的版本是不一樣的,請看一下程式碼。另外就是注意裡面的servlet-class等幾個地方要跟你的類要一致,可以後面寫完類後再來檢查。

四、寫action類

直接放上程式碼,裡面的幾個方法(execute()、getXXX()、setXXX())都是約定的,不清楚的就不要大改了。新建在src目錄下

package login;	//要記住你設定的包名,配置檔案需要
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
	private String username;
	private String userpass;

	public String execute() {
		//這裡帳號密碼直接解除安裝程式裡了……
		if ("daniel".equals(username) && "abcde".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;
	}
}

五、新增jsp檔案

登入表單頁面login.jsp、登入成功頁面welcome.jsp、登入失敗頁面error.jsp基本都沒有什麼講的。

要注意的地方就是表單的提交action目的

<!-- action是struts.xml中的 (package的name)/(action的name).action -->
	<form action="login/LoginAction.action">
		使用者名稱:<input name="username"><br>
		密 碼:<input type="password" name="userpass"><br>
		<input type="submit" value="提 交"><input type="reset" value="取 消">
	</form>

六、蛋疼,配置struts.xml檔案

基本上大部分的錯都因為這個配置檔案。

首先注意,是struts.xml,不是實驗指導上的struts2.xml,應該是實驗指導上的版本不一樣。

新建struts.xml在src下,就是跟action一個目錄,部署的時候MyEclipse會幫我們都搞定的。

我的配置檔案

<?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>
	<package name="login" extends="struts-default">
		<action name="LoginAction" class="login.LoginAction">
			<result name="success">/welcome.jsp</result>
			<result name="error">/error.jsp</result>
		</action>
	</package>
</struts>

<?xml ... ?>必須第一行,<!DOCTYPE ...>必須第二行,下面的標籤的包含層次也一定要正確。

很蛋疼的就是一樣複製過來的是錯的,原因是格式……把所有的空行、不必要的空格去掉,規規矩矩的按標準的格式來。

其中的具體內容。1、DOCTYPE的版本,我這裡用的是2.0,我試了幾個2.0版本基本上沒問題,如果你2.1、2.2不行的話也改2.0吧。

2、struts包含package包含action包含result,package和action的name自己設定,login.jsp檔案裡就是要跟這裡對應。action標籤的class就是上面寫的LoginAction類,按照你的LoginAction類所在包和類名。

3、result標籤的name要跟LoginAction.java檔案的返回值對應,之後就是對應跳轉的目的。

現學現賣,如果有錯誤、問題的話歡迎交流微笑