生活随笔
收集整理的這篇文章主要介紹了
第一个Struts2程序
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
以下是一個(gè)表單信息提交,返回的程序,發(fā)現(xiàn)?Struts 大部分都是由xml文件來控制執(zhí)行流程
?
步驟一:
在MyEclipse建一個(gè)名為Struts2的web工程,接著就要導(dǎo)入外部相關(guān)的jar包,這些jar包都可以去網(wǎng)上下載,把這些jar包放在工程的lib目錄下,
如下圖:
?
這里有9個(gè)jar文件,我用的struts版本是 Struts2.3.1.2
?
步驟二:
在WebRoot目錄下建一個(gè)login.jsp
?
[html]?view plain?copy <%@?page?language="java"?import="java.util.*"?pageEncoding="UTF-8"%>??<%??String?path?=?request.getContextPath();??String?basePath?=?request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";??%>????<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??<html>????<head>??????<base?href="<%=basePath%>">????????????<title>My?JSP?'login.jsp'?starting?page</title>????????????<meta?http-equiv="pragma"?content="no-cache">??????<meta?http-equiv="cache-control"?content="no-cache">??????<meta?http-equiv="expires"?content="0">??????????<meta?http-equiv="keywords"?content="keyword1,keyword2,keyword3">??????<meta?http-equiv="description"?content="This?is?my?page">??????????</head>????????<body>????????????<form?action="login">?????????????用戶名:<input?type="text"?name="usename"?/><br/>?????????????密碼:???<input?type="password"?name="password"?/><br/>???????????<input?type="submit"?value="登錄"/>????????????</form>??????????????</body>??</html>?? ?
Action類,一般會(huì)去繼承ActionSupport類,action類還可以實(shí)現(xiàn)Preparable接口,完成action類的一些初始化工作,就得去實(shí)現(xiàn)Preparable接口的prepare()方法,在該方法里面完成初始化工作,該方法是在execute()方法之前得到調(diào)用
接著在工程下面建一個(gè)LoginAction.java文件,這個(gè)java文件的成員變量最好和login.jsp表單的屬性名字一致,如果不一致,也可以,但至少你的setXXX,和getXXX的名字要和表單的屬性名一致
?
LoginAction.java
?
[java]?view plain?copy package?com.struts2;????public?class?LoginAction?{????????????private?String?usename?;??????private?String?password?;????????????public?String?getUsename()?{??????????return?usename;??????}??????public?void?setUsename(String?usename)?{??????????this.usename?=?usename;??????}??????public?String?getPassword()?{??????????return?password;??????}??????public?void?setPassword(String?password)?{??????????this.password?=?password;??????}????????????????public?String?execute()??????{??????????return?"success"?;??????}????}?? ?
?
接著在WebRoot目錄下建一個(gè)result.jsp結(jié)果頁面,用來顯示結(jié)果
result.jsp
?
[html]?view plain?copy <%@?page?language="java"?import="java.util.*"?pageEncoding="UTF-8"%>??<%??String?path?=?request.getContextPath();??String?basePath?=?request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";??%>????<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??<html>????<head>??????<base?href="<%=basePath%>">????????????<title>My?JSP?'result.jsp'?starting?page</title>????????????<meta?http-equiv="pragma"?content="no-cache">??????<meta?http-equiv="cache-control"?content="no-cache">??????<meta?http-equiv="expires"?content="0">??????????<meta?http-equiv="keywords"?content="keyword1,keyword2,keyword3">??????<meta?http-equiv="description"?content="This?is?my?page">??????????</head>????????<body>??????????usename:?${requestScope.usename?}?<br/>??????password:?${requestScope.password?}????????????</body>??</html>??
?
?
步驟三:
在web.xml文件中聲明過濾器,這個(gè)過濾器不是自己寫的,是struts封裝好的
?
[html]?view plain?copy <?xml?version="1.0"?encoding="UTF-8"?>??<web-app?version="2.5"???????xmlns="http://java.sun.com/xml/ns/javaee"???????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"???????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee???????http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">????????<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>index.jsp</welcome-file>????</welcome-file-list>??</web-app>??
接著在src目錄下建一個(gè)struts.xml文件,建完后也可以在WebRoot\WEB-INF\classes中看到,因?yàn)镮DE幫我們拷貝了一份,這個(gè)文件非常重要,在這個(gè)程序里就是核心
?
struts.xml
?
[html]?view plain?copy <?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="struts2"?extends="struts-default">??????????????<action?name="login"?class="com.struts2.LoginAction">????????????????????????????<!--?name="success"?????????????????????????????????????這個(gè)名字要和LoginAction.java?的?execute()?方法的返回值一致???????????????-->??????????????<result?name="success">/result.jsp</result>??????????????????</action>??????????</package>?????</struts>?? ?
?
現(xiàn)在這個(gè)簡(jiǎn)單的Struts程序就算完成了,接著來部署了,在tomcat文件夾下找到server.xml文件,在</Host>標(biāo)簽上加上
<Context path="/struts2" docBase="E:\code\java_web\Struts2\WebRoot" reloadable="true" />
即可,具體部署參照部署web工程步驟
啟動(dòng)服務(wù)器即可訪問………………………………………………………………………………………………………………
?
總結(jié):
因?yàn)閯偨佑|struts2,不太熟悉,發(fā)現(xiàn)大部分都是由xml文件來控制執(zhí)行流程,用到了很多jar包,就拿那個(gè)過濾器來說吧,現(xiàn)在不用自己寫過濾器了,只要在web.xml文件中配置一下即可,因?yàn)閟truts2給我們封裝好了
?
分析一下執(zhí)行流程:
1) 首先瀏覽器訪問login.jsp的時(shí)候會(huì)web.xml的過濾器檢查到,接著把表單的信息提交到login,
<form action="login">? 默認(rèn)會(huì)把后綴名加上,如: <form action="login.Action">,
?
2) 執(zhí)行到struts.xml
發(fā)現(xiàn)struts.xml文件中的<action name="login" class="com.struts2.LoginAction">? name的屬性名與表單提交過來的action名字相匹配,就執(zhí)行對(duì)應(yīng)的class ???com.struts2.LoginAction? java程序,
調(diào)用setXXX方法 把表單的信息 存在request域中
?
3) 執(zhí)行com.struts2.LoginAction里的execute()方法,發(fā)現(xiàn)該方法返回的值和
<result name="success">/result.jsp</result>
name的屬性值相匹配,則執(zhí)行result.jsp,返回結(jié)果給用戶
?
執(zhí)行完畢……
轉(zhuǎn)載于:https://www.cnblogs.com/hoobey/p/5294502.html
總結(jié)
以上是生活随笔為你收集整理的第一个Struts2程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。