生活随笔
收集整理的這篇文章主要介紹了
第一个Struts2程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下是一個表單信息提交,返回的程序,發現?Struts 大部分都是由xml文件來控制執行流程
?
步驟一:
在MyEclipse建一個名為Struts2的web工程,接著就要導入外部相關的jar包,這些jar包都可以去網上下載,把這些jar包放在工程的lib目錄下,
如下圖:
?
這里有9個jar文件,我用的struts版本是 Struts2.3.1.2
?
步驟二:
在WebRoot目錄下建一個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類,一般會去繼承ActionSupport類,action類還可以實現Preparable接口,完成action類的一些初始化工作,就得去實現Preparable接口的prepare()方法,在該方法里面完成初始化工作,該方法是在execute()方法之前得到調用
接著在工程下面建一個LoginAction.java文件,這個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目錄下建一個result.jsp結果頁面,用來顯示結果
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文件中聲明過濾器,這個過濾器不是自己寫的,是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目錄下建一個struts.xml文件,建完后也可以在WebRoot\WEB-INF\classes中看到,因為IDE幫我們拷貝了一份,這個文件非常重要,在這個程序里就是核心
?
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"?????????????????????????????????????這個名字要和LoginAction.java?的?execute()?方法的返回值一致???????????????-->??????????????<result?name="success">/result.jsp</result>??????????????????</action>??????????</package>?????</struts>?? ?
?
現在這個簡單的Struts程序就算完成了,接著來部署了,在tomcat文件夾下找到server.xml文件,在</Host>標簽上加上
<Context path="/struts2" docBase="E:\code\java_web\Struts2\WebRoot" reloadable="true" />
即可,具體部署參照部署web工程步驟
啟動服務器即可訪問………………………………………………………………………………………………………………
?
總結:
因為剛接觸struts2,不太熟悉,發現大部分都是由xml文件來控制執行流程,用到了很多jar包,就拿那個過濾器來說吧,現在不用自己寫過濾器了,只要在web.xml文件中配置一下即可,因為struts2給我們封裝好了
?
分析一下執行流程:
1) 首先瀏覽器訪問login.jsp的時候會web.xml的過濾器檢查到,接著把表單的信息提交到login,
<form action="login">? 默認會把后綴名加上,如: <form action="login.Action">,
?
2) 執行到struts.xml
發現struts.xml文件中的<action name="login" class="com.struts2.LoginAction">? name的屬性名與表單提交過來的action名字相匹配,就執行對應的class ???com.struts2.LoginAction? java程序,
調用setXXX方法 把表單的信息 存在request域中
?
3) 執行com.struts2.LoginAction里的execute()方法,發現該方法返回的值和
<result name="success">/result.jsp</result>
name的屬性值相匹配,則執行result.jsp,返回結果給用戶
?
執行完畢……
轉載于:https://www.cnblogs.com/hoobey/p/5294502.html
總結
以上是生活随笔為你收集整理的第一个Struts2程序的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。