<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                上一篇我們簡單了解了[struts](http://blog.csdn.net/lovesummerforever/article/details/18942381)[原理](http://blog.csdn.net/lovesummerforever/article/details/18942381),學習SSH,第一部是傻瓜式學習法,人家怎么做就跟著怎么做就ok。我們以登錄為例,Struts配置步驟總結如下(如圖2.1): ![](https://box.kancloud.cn/2016-06-21_5769087e2ace6.jpg) 圖2.2 ### 1、jar包拷貝 首先是建立java web項目,之后打開我們我們下載好strtus框架,Struts-1.2.9-bin文件夾和struts-1.2.9.src源文件文件夾。在bin文件夾中的lib文件中拷貝struts的jar包,拷貝到我們自己項目struts_login –>lib文件夾下(如圖2.2)。 ![](https://box.kancloud.cn/2016-06-21_5769087e4b5fa.jpg) 圖2.2 ### 2、web.xml文件配置 找到Struts-1.2.9-bin中Struts-1.2.9-bin-->webapps下的struts實例struts-blank中的struts-1.2.9-bin\webapps\struts-blank\WEB-INF下的web.xml文件,復制配置對ActionServlet的配置,粘貼到我們的項目struts_login的WEB-INF下的web.xml中,代碼如下所示。主要是對struts自帶的ActionServlet進行配置。 ~~~ <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <!--Standard Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> ~~~ ### 3、在項目中建立自己的ActionForm 在項目中建立自己的ActionForm,繼承struts框架中已經寫好的ActionForm,在ActionForm設置用到的數據,并且要和我們界面上設置的名稱一致。因為我們在提交表單的時候,所有的請求都會放到ActionForm中。建立登錄的ActionForm,LoginActionForm.java代碼如下所示。 ~~~ package com.bjpowernode.struts; import org.apache.struts.action.ActionForm; /** * 登錄ActionForm,負責表單收集數據. * 表單的屬性必須和ActionForm中的get和set的屬性一致. * @author summer * */ public classLoginActionForm extends ActionForm { //用戶名。 private Stringusername; //密碼。 private String password; //設置密碼。 public voidsetPassword(Stringpassword) { this.password = password; } //得到用戶名。 public StringgetUsername() { return username; } //設置用戶名。 public voidsetUsername(Stringusername) { this.username = username; } //得到密碼。 public StringgetPassword() { return password; } } ~~~ ### 4、建立自己的Action 建立自己的Action,同時繼承struts框架中的org.apache.struts.action.Action,重載父類的execute方法。在這里完成取出表單中的數據。通過CalActionFormcalForm= (CalActionForm)(CalActionForm)form;(struts框架中已經幫我們封裝好了,我們去使用就可以了)來取得表單中的值。經過判斷后,進行相應的操作,跳轉到相應的頁面。Action的功能是負責拿到表單數據和調用業務邏輯后進行頁面跳轉。建立登陸的Action類,LoginAction.java類,調用業務邏輯類UserManager的login方法。代碼如下所示。 ~~~ packagecom.bjpowernode.struts; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; importorg.apache.struts.action.Action; importorg.apache.struts.action.ActionForm; importorg.apache.struts.action.ActionForward; importorg.apache.struts.action.ActionMapping; /** *登錄Action *負責取得表單數據,調用業務邏輯,返回轉向信息. * * @author summer * */ public classLoginAction extendsAction { @Override public ActionForward execute(ActionMappingmapping,ActionForm form, HttpServletRequest request, HttpServletResponseresponse) throws Exception { LoginActionForm laf = (LoginActionForm)form; Stringusername = laf.getUsername(); Stringpassword = laf.getPassword(); UserManager userManager = newUserManager(); //傳遞用戶名和密碼 try { userManager.login(username, password); request.setAttribute("username", username); return mapping.findForward("success"); }catch(UserNotFoundException e) { e.printStackTrace(); request.setAttribute("msg","用戶不能找到,用戶名稱=[" +username +"+]"); }catch(PasswordErrorException e) { e.printStackTrace(); request.setAttribute("msg","密碼錯誤"); } return mapping.findForward("error"); } } ~~~ ### 5、建立struts-config.xml 作為Struts框架的核心描述,struts-config.xml可以說“一切盡在掌握”。它不但描述了MVC模型,定義所有視圖層和控制層之間的接口(ActionForm),與控制層和模型層的接口(Action)進行結合,而且可以定義一些附加組件,如國際化信息資源排至文件,標簽庫信息等。 仍然是站在巨人的肩膀上,將我們下載的struts ?bin文件夾中的struts-config.xml文件復制到我們的項目的WEB-INF中,刪除struts-config.xml中的注釋部分。把Action和ActionForm配置起來。ActionForm放到<form-beans></form-beans>中,Action配置放到<action-mappings></action-mappings>中,struts-config.xml配置代碼如下所示。 ~~~ <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="loginForm" type="com.bjpowernode.struts.LoginActionForm"/> </form-beans> <action-mappings> <action path="/login" type="com.bjpowernode.struts.LoginAction" name="loginForm" scope="request" > <forward name="success" path="/login_success.jsp"/> <forward name="error" path="/login_error.jsp"/> </action> </action-mappings> </struts-config> ~~~ 其中form-beans元素中可以定義0個或1個以上的form-bean元素,每個form-bean被認為是一個ActionForm對象,name屬性表示form-bean元素的名稱,type屬性指定其類名和路徑。 Action-mappings元素用來包含零到多個action,其子元素action負責具體映射的詳細信息。在action-mapping元素中可以定義0個或1個以上的action元素。每個action元素接受path屬性定義的請求,并映射到type屬性所定義的具體action對象。在映射過程中,將name屬性定義的actionform一并傳過去,它有如下屬性: Parameter,scope兩個屬性指定了傳送方式和范圍,scope常用的值有兩個“session”和“request”。 Validate屬性指定了是否需要actionform的驗證。 Forward元素,將請求success轉發到”**/**login_success.jsp**”**頁面。 **** ### 6、業務邏輯類UserManager和自定義異常類 代碼如下所示: ~~~ packagecom.bjpowernode.struts; publicclassUserManager { publicvoid login(Stringusername,Stringpassword) { if(!"admin".equals(username)) { thrownewUserNotFoundException(); } if(!"admin".equals(password)) { thrownewPasswordErrorException(); } } } ~~~ 自定義異常類UserNotFoundException和PasswordErrorException代碼如下所示。 ~~~ packagecom.bjpowernode.struts; public class UserNotFoundExceptionextends RuntimeException { public UserNotFoundException() { } public UserNotFoundException(Stringmessage) { super(message); } public UserNotFoundException(Throwable cause) { super(cause); } public UserNotFoundException(Stringmessage,Throwable cause) { super(message, cause); } } packagecom.bjpowernode.struts; public class PasswordErrorExceptionextends RuntimeException { public PasswordErrorException() { } public PasswordErrorException(Stringmessage) { super(message); } public PasswordErrorException(Throwable cause) { super(cause); } public PasswordErrorException(Stringmessage,Throwable cause) { super(message, cause); } } ~~~ ### 7、視圖jsp頁面調用。 登錄界面login.jsp,錯誤顯示界面login_error.jsp,登錄成功界面login_success.jsp。代碼如下所示。 ~~~ <%@pagelanguage="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPEhtml PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Inserttitle here</title> </head> <body> <form action="login.do" method="post"> 用戶:<inputtype="text" name="username"><Br> 密碼:<inputtype="password" name="password"></br> <input type="submit" value="登錄"> </form> </body> </html> ~~~ Login_success.jsp. ~~~ <%@page language="java"contentType="text/html;charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> ${username},登錄成功! </body> </html> ~~~ Login_error.jsp界面。 ~~~ <%@page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> <%-- <%=request.getAttribute("msg") %> --%> ${msg } </body> </html> ~~~ 就這樣我們實現了運用struts框架完成用戶登錄。就這樣從初步學習到簡單應用,隨著應用的次數增多,我們會對struts理解越來越深刻,并且感受struts框架給我們帶來的便捷。 下一篇[Struts表單處理器ActionForm(靜態動態)](http://blog.csdn.net/lovesummerforever/article/details/18951649)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看