從今天開始,一起跟各位聊聊java的三大框架——SSH。先從Struts開始說起,Struts對MVC進(jìn)行了很好的封裝,使用Struts的目的是為了幫助我們減少在運(yùn)用MVC設(shè)計模型來開發(fā)Web應(yīng)用的時間。如果我們想混合使用Servlets和JSP的優(yōu)點(diǎn)來建立可擴(kuò)展的應(yīng)用,struts是一個不錯的選擇。今天通過一個簡單的例子來說說Struts。
登錄頁面:這里面沒啥東西,主要就是將action命名成“.do”的形式,讓Struts通過配置文件來執(zhí)行相應(yīng)操作。
<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值必須跟對應(yīng)的actionform的get、set屬性一致。
web.xml:它的作用就是告訴Struts它的配置文件(struts-config.xml)在哪,讓Struts可以找到,還有執(zhí)行的動作(.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:從名字上就能看出來,這是Struts的配置文件。form-bean用來接收提交的表單數(shù)據(jù),action-mappings用來執(zhí)行相應(yīng)的動作。
<?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>
這個類就是用來處理用戶登錄的業(yè)務(wù)邏輯
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");
}
}
通過上面這個簡單的小實(shí)例,大家可以清晰的看出,兩個配置文件起到了一個很好的串聯(lián)作用。也正是因?yàn)橛信渲梦募?,所以才是程序變得非常的靈活。這個小例子比較簡單,配置文件承擔(dān)的責(zé)任不是很多,后面的東西會更多的用到配置文件,體會就會更加的深刻了。最后為大家附上源碼方便一起研究討論。
更多建議: