java裡Struts2學習登錄練習詳解。本站提示廣大學習愛好者:(java裡Struts2學習登錄練習詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是java裡Struts2學習登錄練習詳解正文
最近在學struts2裡面遇到很多錯誤,今天跟大家分享一下,我的開發工具是Eclipse;
1、到網上下載Struts2的包,這裡不再累贅,百度有很多;
2、新建一個項目,記得後面加上web.xml文件;
3、先部署struts2開發環境。
(1)、在struts2.2以後,我們需要導入的包有以下幾個:
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.0.4.jar
commons-lang3-3.1.jar
freemarker-2.3.16.jar
javassist-3.7.ga.jar
ornl-3.0.jar
struts2-core-2.2.1.1.jar,
xwork-core-2.2.1.1jar
我通常都是把這些文件復制到WEB-INF/lib目錄裡。也可以在項目屬性的Java Build Path中的libraries裡面添加;
(2)、在lib文件夾下面的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>
現在web.xml文件是這樣的
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>Struts2Mianshi</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> </web-app>
(3)、在src目錄下新建struts.xml文件,記住配置文件位置 在src目錄下,命名struts.xml 小寫。配置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> <package name="main" extends="struts-default"> <!--這個裡面寫action配置--> </package> </struts>
4、在WebContent建一個文件夾存放JSP頁面的(我建議還是建立一個Page文件夾 有利於文件的管理,還有後面的路徑也好弄)
5、在Page文件裡創建一個JSP文件命名index.jsp寫登陸界面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String RootPath=request.getContextPath(); %> <!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=UTF-8"> <title>登陸界面</title> </head> <body> <form action="<%=RootPath %>/login" method="post"> 登陸<br/> 賬號:<input type="text" name="username" /><br /> 密碼:<input type="password" name="userpwd" /><br /> <input type="submit" value="提交"/> </form> </body> </html>
<%=request.getContextPath()%>是為了解決相對路徑的問題,可返回站點的根路徑。
6、在src下創建一個包在創建一個loginAction.java 讓這個類繼承ActionSupport(action文件命名規則自己看)
看到JSp頁面的賬號username與密碼userpws不。這邊要獲取就要命名跟他一樣
private String UserName;並get、set 然後寫execute()方法
package com.weiyang.acction; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") public class loginAction extends ActionSupport { private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getUserpwd() { return userpwd; } public void setUserpwd(String userpwd) { this.userpwd = userpwd; } private String userpwd; /** * execute方法會在該Action類被調用的時候自動執行, * 如果 賬號="admin"並且密碼="123456",就返回SUCCESS * 否則返回ERROR */ public String execute() { if(username.equalsIgnoreCase("admin") && userpwd.equalsIgnoreCase("123456")) { return SUCCESS; } else { return ERROR; } } }
7、action寫好了就去配置struts.xml
<!--action標簽的name是login,這個必須跟index.jsp中的action屬性一致性。class是loginAction類的全稱--> <action name="login" class="com.weiyang.acction.loginAction"> <!--這個標簽的意思是當LogAction類的execute方法返回SUCCESS時,頁面跳轉到success.jsp--> <result name="success">WEB-INF/success.jsp</result> <result name="error">WEB-INF/error.jsp</result> </action>
login,這個必須跟index.jsp中的action屬性一致性。class必須寫loginAction類的全稱
success 跟error是jsp文件 用來驗證成功與失敗 把他們新建在WEB-INF目錄下
<result name="success">WEB-INF/success.jsp</result> 其他目錄建立的寫好路徑
我的文件結構
個人理解的流程,web.xml文件中加入了strtus配置文件,所以index.jsp運行後指向action裡面的login,在struts.xml文件找到login通過class找到action類,進行execute方法根據返回的success或者error又指向對應的jsp文件顯示給用戶。
開始做的時候 出現額404錯誤
<!--<constant name="struts.action.extension" value="action,do"></constant>--> 我在struts.xm文件中有這句運行index.jsp出現404
action="<%=RootPath %>/login" method="post"> 沒有獲取項目路徑也是404,就是像這樣action="login" method="post">
因為我建了一個文件夾PageHH存放jsp文件 所以路徑就出現問題
最多的還是上面說的細節 命名,struts.xml文件裡的配置不仔細出現的404
目前遇到的問題 在struts.xml文件包含了一個login.xml文件 讓他代替struts.xml配置實現登陸模塊,以後可以根據各自的功能建不同的配置文件。
<include file="login.xml"></include>
這句加上去 login.xml文件配置也沒發現村 運行起來就出現404 還在找問題
初學者 大神勿噴!