使用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檔案的返回值對應,之後就是對應跳轉的目的。
現學現賣,如果有錯誤、問題的話歡迎交流