Struts 基礎開發---day01
前言
我是一個小白,今天首次學習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