还是先把这里学精了,再去学别的吧。Struts in action的第一个简单例子。 以下是register.jsp代码。<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>是指使用的标签库。html:form等就不说了。 <%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>register</title> </head> <body> <p><html:form action="/register.do"> username:<html:text property="username"></html:text><br/> password1:<html:text property="password1"></html:text><br/> password2:<html:text property="password2"></html:text><br/> <html:submit></html:submit> </html:form></p> </body> </html> 以下是success.jsp页面,用于显示注册成功信息,failure.jsp类似。 <%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>注册成功</title> </head> <body> <p>注册成功!</p><br/> <a href="register.jsp" mce_href="register.jsp">再试一次?</a> </body> </html> MVC里面的v已经完成了,接下来要做c。 我们要建立一个action form,这是一个JavaBean,扩展了struts.actionform类,这个对象捕获通过请求传送的输入--当浏览器提交一个表单,他在请求中为每个表单中的字段创建一个参数。下面是RegisterForm的源代码。 package app; import org.apache.struts.action.ActionForm; public class RegisterForm extends ActionForm{ private String password2; private String password1; private String username; public String getUsername(){ return username; } public void setUsername(String i){ username = i; } public String getPassword1(){ return password1; } public void setPassword1(String i){ password1 = i; } public String getPassword2(){ return password2; } public void setPassword2(String i){ password2 = i; } } 下面要创建RegisterAction,Action是一个java类,扩展了struts.Action,ActionServlet负责组装ActionForm,然后将其传递给Action,Action通常负责输入校验,访问业务信息,以及决定向servlet返回哪个ActionForward。 RegisterAction.java代码。 package app; import org.apache.struts.action.*; import javax.servlet.http.*; import java.io.*; public class RegisterAction extends Action{ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res ){ RegisterForm rf = (RegisterForm)form; String username = rf.getUsername(); String password1 = rf.getPassword1(); String password2 = rf.getPassword2(); ActionForward forward = new ActionForward(); if(password1.equals(password2)){ try{ //UserDirectory.getInstance().setUser(username,password1); forward = mapping.findForward("success"); }catch(Exception e){ forward = mapping.findForward("failure"); } }else{ forward = mapping.findForward("failure"); } return (forward); } } 这里面我将UserDirectory.getInstance().setUser(username,password1);这句代码屏蔽了,暂时只讨论简单的struts应用,不用管这个。 接下来就是创建struts-config.xml,也即是struts的配置文件。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans> <form-bean name="RegisterForm" type="app.RegisterForm"> </form-bean> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings> <action path="/register" type="app.RegisterAction" name="RegisterForm" scope="request" input="/register.jsp"> <forward name="success" path="/success.jsp"></forward> <forward name="failure" path="/failure.jsp"></forward> </action> </action-mappings> <message-resources parameter="test.resources.ApplicationResources" /> </struts-config> 不是很难啦,我就不说了。运行tomcat,到register.jsp看看呗。 忘了说,web.xml里加上这些 <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>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> 简单的struts搞定。