1. 程式人生 > >Struts 基礎開發---day01

Struts 基礎開發---day01

lob 大致 dex org 分享 clip 以及 config exceptio

前言

我是一個小白,今天首次學習Struts的基本內容,是看視頻和看書相結合的,主要是記錄這個學習的過程以及學習的過程中遇到的問題。

-----------------------------------------------------------------------------------------------------------------------------------

傳統的MVC分為servlet(控制器),Javabean(模型層),jsp(顯示層)三個部分,Struts可以說是MVC的一個具體的實現,增加了ActionForm、Action和Struts標簽庫層。接下來用myEclipse開發第一個Struts程序,大致流程為:在hello.jsp頁面通過文本框輸入要顯示的內容,然後提交到struts,如果內容為空,點擊顯示按鈕,出現錯誤提示;如果不為空,struts將信息顯示在頁面上。

file--->new--->webproject,這裏將名稱取為strutstest,然後點擊此項目右鍵,--->myEclipse--->Add Struts Capabilities,這裏是添加了struts支持 。

技術分享

點擊finish之後在項目下可以看到struts-config.xml web.xml JavaEE的jar包以及Struts的jar包等。

刪除原來的index.jsp 在Web-Root下新建一個hello.jsp

技術分享

接下來新建ActionForm及Action。註意每一個處理類Action都要綁定一個ActionFrom。

選中剛剛的com.du.struts包--->new --->others ,再搜索Struts,選擇Struts1.3下的struts1.3 From,Action&JSP

技術分享

點擊next

技術分享

點擊finish之後,配置文件裏面的form-beans和action-mappings有新的內容。其中path表示提交的路徑,input表示錯誤信息的顯示頁面。在web.xml裏面的url-pattern是*.do,那麽在hello.jsp裏面的action就是hello.do.大體框架已經搭好了,下面就是進行邏輯上的操作。我把各部分的代碼放在下面供參考:

 1 <%@ page language="java" pageEncoding="UTF-8"%>
 2 
 3 <!-- 這是Struts已經添加好的標簽庫,我們直接使用即可 -->
 4
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> 5 <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> 6 <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> 7 <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %> 8 9 10 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 11 <html:html lang="true"> 12 <head> 13 14 <title>hello.jsp</title> 15 16 </head> 17 18 <body> 19 <html:errors/> 20 <logic:present name="msg" scope="request"> 21 <h2>${msg}</h2> 22 </logic:present> 23 <html:form action="" method="post"> 24 請輸入信息:<html:text property="info"></html:text> 25 <html:submit value="顯示"></html:submit> 26 </html:form> 27 </body> 28 </html:html>
技術分享
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
 3 
 4 <struts-config>
 5   <form-beans >
 6     <form-bean name="helloForm" type="com.du.struts.form.HelloForm" />
 7 
 8   </form-beans>
 9 
10   <global-exceptions />
11   <global-forwards />
12   <action-mappings >
13     <action
14       attribute="helloForm"
15       input="/hello.jsp"
16       name="helloForm"
17       path="/hello"
18       scope="request"
19       type="com.du.struts.action.HelloAction"
20       cancellable="true" >
21       <forward name="show" path="/hello.jsp"></forward>
22       </action>
23    
24   </action-mappings>
25 
26   <message-resources parameter="com.du.struts.ApplicationResources" />
27 </struts-config>
config Code 技術分享
 1 <%@ page language="java" pageEncoding="UTF-8"%>
 2 
 3 <!-- 這是Struts已經添加好的標簽庫,我們直接使用即可 -->
 4 <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
 5 <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
 6 <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
 7 <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
 8 
 9 
10 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
11 <html:html lang="true">
12   <head>
13    
14     <title>hello.jsp</title>
15 
16   </head>
17   
18   <body>
19       <html:errors/>
20       <logic:present name="msg" scope="request">
21       <h2>${msg}</h2>
22       </logic:present>
23    <html:form action="" method="post">
24        請輸入信息:<html:text property="info"></html:text>
25        <html:submit value="顯示"></html:submit>
26    </html:form>
27   </body>
28 </html:html>
HelloJsp Code

技術分享
 1 /*
 2  * Generated by MyEclipse Struts
 3  * Template path: templates/java/JavaClass.vtl
 4  */
 5 package com.du.struts.form;
 6 
 7 import javax.servlet.http.HttpServletRequest;
 8 import org.apache.struts.action.ActionErrors;
 9 import org.apache.struts.action.ActionForm;
10 import org.apache.struts.action.ActionMapping;
11 import org.apache.struts.action.ActionMessage;
12 
13 /** 
14  * MyEclipse Struts
15  * Creation date: 07-20-2017
16  * 
17  * XDoclet definition:
18  * @struts.form name="helloForm"
19  */
20 public class HelloForm extends ActionForm {
21     /*
22      * Generated fields
23      */
24 
25     /** info property */
26     private String info;
27 
28     /*
29      * Generated Methods
30      */
31 
32     /** 
33      * Method validate
34      * @param mapping
35      * @param request
36      * @return ActionErrors
37      */
38     //ActionFrom類用於驗證,info屬性與表單提交的參數名稱一致,並設置了setter和getter操作
39     public ActionErrors validate(ActionMapping mapping,
40             HttpServletRequest request) {
41         ActionErrors errors=new ActionErrors();
42         if(this.info==null||"".equals(this.info)){//info的輸入內容為空
43             //保存錯誤信息,一個ActionErrors可以包含多個ActionMessage,
44             //ActionMessage類的構造方法中需要傳遞一個指定錯誤信息的key,錯誤信息在ApplicationResource.properties中定義
45             //資源文件不支持中文,會將中文自動轉換為Unicode編碼
46             errors.add("info",new ActionMessage("error.info"));
47         }
48         return errors;
49     }
50 
51     /** 
52      * Method reset
53      * @param mapping
54      * @param request
55      */
56     public void reset(ActionMapping mapping, HttpServletRequest request) {
57         // TODO Auto-generated method stub
58     }
59 
60     /** 
61      * Returns the info.
62      * @return String
63      */
64     public String getInfo() {
65         return info;
66     }
67 
68     /** 
69      * Set the info.
70      * @param info The info to set
71      */
72     public void setInfo(String info) {
73         this.info = info;
74     }
75 }
HelloFrom Code 技術分享
 1 /*
 2  * Generated by MyEclipse Struts
 3  * Template path: templates/java/JavaClass.vtl
 4  */
 5 package com.du.struts.action;
 6 
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 import org.apache.struts.action.Action;
10 import org.apache.struts.action.ActionForm;
11 import org.apache.struts.action.ActionForward;
12 import org.apache.struts.action.ActionMapping;
13 import com.du.struts.form.HelloForm;
14 
15 /** 
16  * MyEclipse Struts
17  * Creation date: 07-20-2017
18  * 
19  * XDoclet definition:
20  * @struts.action path="/hello" name="helloForm" input="/hello.jsp" scope="request" validate="true"
21  */
22 public class HelloAction extends Action {
23     /*
24      * Generated Methods
25      */
26 
27     /** 
28      * Method execute
29      * @param mapping
30      * @param form
31      * @param request
32      * @param response
33      * @return ActionForward
34      */
35     public ActionForward execute(ActionMapping mapping, ActionForm form,
36             HttpServletRequest request, HttpServletResponse response) {
37         HelloForm helloForm = (HelloForm) form;// HelloFrom對象
38         String info=helloForm.getInfo();//所有的輸入內容從ActionFrom取出
39         request.setAttribute("msg", info);//設置request的屬性範圍,另外每一個Action都需要一個跳轉路徑,到配置文件去設置
40         return mapping.findForward("show");
41     }
42 }
HelloAction Code 技術分享
1 error.info=\u8F93\u5165\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A\uFF01
Resource Code

寫的過程中所犯的錯誤:

ActionFrom類裏面的錯誤信息保存New Message 不是Messages啊

Struts 基礎開發---day01