從今天開始,一塊兒跟各位聊聊java的三大框架——SSH。先從Struts開始提及,Struts對MVC進行了很好的封裝,使用Struts的目的是爲了幫助咱們減小在運用MVC設計模型來開發Web應用的時間。若是咱們想混合使用Servlets和JSP的優勢來創建可擴展的應用,struts是一個不錯的選擇。今天經過一個簡單的例子來講說Struts。html
登陸頁面: java
這裏面沒啥東西,主要就是將action命名成「.do」的形式,讓Struts經過配置文件來執行相應操做。 web
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> <form action="login.do" method="post"> 用戶:<input type="text" name="username"><br> 密碼:<input type="password" name="password"></br> <input type="submit" value="登陸"> </form> </body> </html>
PS:表單中的name值必須跟對應的actionform的get、set屬性一致。
apache
web.xml: app
它的做用就是告訴Struts它的配置文件(struts-config.xml)在哪,讓Struts能夠找到,還有執行的動做(.do),還有加載順序之類的。 框架
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <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> <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> </web-app>
struts-config.xml: jsp
從名字上就能看出來,這是Struts的配置文件。form-bean用來接收提交的表單數據,action-mappings用來執行相應的動做。 ide
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="loginForm" type="com.lsj.struts.LoginActionForm"/> </form-beans> <action-mappings> <action path="/login" type="com.lsj.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>
這個類就是用來處理用戶登陸的業務邏輯 post
package com.lsj.struts; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class LoginAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginActionForm laf = (LoginActionForm)form; String username = laf.getUsername(); String password = laf.getPassword(); UserManager userManager = new UserManager(); try { userManager.login(username, password); 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"); } }
經過上面這個簡單的小實例,你們能夠清晰的看出,兩個配置文件起到了一個很好的串聯做用。也正是由於有配置文件,因此纔是程序變得很是的靈活。這個小例子比較簡單,配置文件承擔的責任不是不少,後面的東西會更多的用到配置文件,體會就會更加的深入了。最後爲你們附上源碼方便一塊兒研究討論。
ui