由于工作需要,需要经多个表单在最后一部进行操作,觉得spring的AbstractWizardFormController最适合在这里使用,我自己做的一个完整的小例子。以下是全部的代码:
1)配置文件:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.3" 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_3.xsd">
<servlet>
<servlet-name>heheapp</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>heheapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
</web-app>
2)heheapp-servlet.xml
这个名字是由web.xml中的<servlet-name>属性来的,spring中是这样默认的。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="registerController" class="com.kang.test.RegisterController">
<property name="successView"><value>success</value> </property>
<property name="cancelView"><value>main</value> </property>
<property name="commandClass"><value>com.kang.test.RegisterInfor</value></property>
<property name="pages">
<list>
<value>main</value>
<value>register1</value>
<value>register2</value>
<value>register3</value>
</list>
</property>
</bean>
<!--InternalResourceViewResolver-->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<!--SimpleUrlHandlerMapping-->
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hehe.htm">registerController</prop>
</props>
</property>
</bean>
</beans>
在这个配置文件里,所有的舰艇都来自web.xml文件,这里进一步进行监听,凡是以/hehe.htm作为提交目的的都将被registerController进行处理。
3)RegisterController
package com.kang.test;
import org.apache.log4j.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractWizardFormController;
public class RegisterController extends AbstractWizardFormController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(RegisterController.class);
private String successView;
private String cancelView;
public RegisterController(){
logger.info("--------RegisterController init----start--");
//setPages(new String[] {"main.jsp", "register1.jsp", "register2.jsp", "register3.jsp"});
//this.successView="success.jsp";
//this.cancelView="main.jsp";
logger.info("--------RegisterController init----end----");
}
public String getSuccessView() {
logger.info("--------RegisterController getSuccessView()------");
return successView;
}
public void setSuccessView(String successView) {
this.successView = successView;
}
public String getCancelView() {
logger.info("--------RegisterController getCancelView()------");
return cancelView;
}
public void setCancelView(String cancelView) {
this.cancelView = cancelView;
}
public ModelAndView processFinish(HttpServletRequest req, HttpServletResponse res, Object command, BindException errs) throws Exception {
logger.info("-----processFinish-----start-----");
RegisterInfor registerInfor = (RegisterInfor) command;
logger.info("-----processFinish-----registerInfor:"+registerInfor);
logger.info("-----processFinish-----end-----");
return new ModelAndView(this.getSuccessView(), "registerInfor", registerInfor);
}
public ModelAndView processCancel(HttpServletRequest req, HttpServletResponse res, Object command, BindException errs) throws Exception {
logger.info("-----processCancel-----");
return new ModelAndView(this.getCancelView());
}
}
4)RegisterInfor 是一个普通的bean,负责存贮整个流程中需要提交的信息,他在多个步骤中使用。
package com.kang.test;
import java.io.UnsupportedEncodingException;
import org.apache.log4j.Logger;
public class RegisterInfor {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(RegisterInfor.class);
private String name;
private int age;
private char sex;
private String adress;
private String phone;
private String email;
private String favor;
public RegisterInfor(){
logger.info("--------RegisterInfor init------");
}
public String getAdress() {
logger.info("--------getAdress()------");
return adress;
}
public void setAdress(String adress) {
logger.info("--------setAdress------adress:"+adress);
this.adress = StringUtil.changeStringCharSet(adress, "ISO-8859-1", "GBK");
logger.info("--------adress:"+this.adress);
}
public int getAge() {
logger.info("-------getAge-------");
return age;
}
public void setAge(int age) {
logger.info("-------setAge-------age:"+age);
this.age = age;
}
public String getEmail() {
logger.info("-------getEmail-------");
return email;
}
public void setEmail(String email) {
logger.info("-------setEmail-------email:"+email);
this.email = email;
}
public String getFavor() {
logger.info("-------getFavor-------");
return this.favor;
}
public void setFavor(String favor) {
this.favor=StringUtil.changeStringCharSet(favor, "ISO-8859-1", "GBK");
logger.info("-------setFavor-------favor:"+this.favor);
}
public String getName() {
logger.info("-------getName-------");
return this.name;
}
public void setName(String name) {
this.name = StringUtil.changeStringCharSet(name, "ISO-8859-1", "GBK");
logger.info("-------setName-------name:"+this.name);
}
public String getPhone() {
logger.info("--------getPhone------");
return phone;
}
public void setPhone(String phone) {
logger.info("-------setPhone-------phone:"+phone);
this.phone = phone;
}
public char getSex() {
logger.info("-------getSex-------");
return sex;
}
public void setSex(char sex) {
logger.info("-------setSex-------sex:"+sex);
this.sex = sex;
}
}
5)mian.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<FORM action="hehe.htm" method="post" name="dsada">
<TABLE>
<TBODY>
<TR>
<TD>
注册信息,请认真填写!
<input type="submit" value="下一步" name="_target1" align="center"/>
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
<br>
</body>
</html>
6)register1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<title>My JSP 'second.jsp' starting page</title>
</head>
<body>
<table>
<TR>
<TD>
User infor:
</TD>
</TR>
<TR>
<TD>姓名:
<c:out value="${registerInfor.name}" />
</TD>
</TR>
<TR>
<TD>年龄:
<c:out value="${registerInfor.age}" />
</TD>
</TR>
<TR>
<TD>
地址:
<c:out value="${registerInfor.adress}" />
</TD>
</TR>
<TR>
<TD>email:
<c:out value="${registerInfor.email}" />
</TD>
</TR>
<TR>
<TD>电话:
<c:out value="${registerInfor.phone}" />
</TD>
</TR>
<TR>
<TD>喜好:
<c:out value="${registerInfor.favor}" />
</TD>
</TR>
</table>
</body>
</html>
7)register2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html>
<head>
<title>My JSP '2.jsp' starting page</title>
</head>
<body>
<FORM action="hehe.htm" method="post" name="dsadas">
<TABLE>
<TBODY>
<TR>
<TD>
地址:
<INPUT name="adress" type="text" />
</TD>
</TR>
<TR>
<TD>
电话:
<INPUT name="phone" type="text" />
</TD>
</TR>
<TR>
<TD>
电子邮件:
<INPUT name="email" type="text" />
</TD>
</TR>
<TR>
<TD align="center">
<INPUT type="submit" value="上一步" name="_target1" />
<INPUT type="submit" value="下一步" name="_target3" />
<INPUT type="submit" value="取消" name="_cancel" />
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
</body>
</html>
8)register3.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html>
<head>
<title>My JSP '3.jsp' starting page</title>
</head>
<body>
<FORM action="hehe.htm" method="post" name="dsadas">
<TABLE>
<TBODY>
<TR>
<TD>
喜好:
<br>
<TEXTAREA cols="40" rows="8" name="favor"
style="background-color:D7F8AB"></TEXTAREA>
</TD>
</TR>
<TR>
<TD align="center">
<INPUT type="submit" value="上一步" name="_target2" />
<INPUT type="submit" value="完成" name="_finish" />
<INPUT type="submit" value="取消" name="_cancel" />
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
</body>
</html>
9)success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<title>My JSP 'second.jsp' starting page</title>
</head>
<body>
<table>
<TR>
<TD>
User infor:
</TD>
</TR>
<TR>
<TD>姓名:
<c:out value="${registerInfor.name}" />
</TD>
</TR>
<TR>
<TD>年龄:
<c:out value="${registerInfor.age}" />
</TD>
</TR>
<TR>
<TD>
地址:
<c:out value="${registerInfor.adress}" />
</TD>
</TR>
<TR>
<TD>email:
<c:out value="${registerInfor.email}" />
</TD>
</TR>
<TR>
<TD>电话:
<c:out value="${registerInfor.phone}" />
</TD>
</TR>
<TR>
<TD>喜好:
<c:out value="${registerInfor.favor}" />
</TD>
</TR>
</table>
</body>
</html>
10)还有个字符处理的方法:
package com.kang.test;
import java.io.UnsupportedEncodingException;
public class StringUtil {
public static String changeStringCharSet(String str,String oldCharSet,String toCharSet){
String temp="";
try {
temp = new String(str.getBytes(oldCharSet),toCharSet);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return temp;
}
}
全部的代码,发布以下就可以运行!呵呵!
1)配置文件:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.3" 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_3.xsd">
<servlet>
<servlet-name>heheapp</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>heheapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
</web-app>
2)heheapp-servlet.xml
这个名字是由web.xml中的<servlet-name>属性来的,spring中是这样默认的。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="registerController" class="com.kang.test.RegisterController">
<property name="successView"><value>success</value> </property>
<property name="cancelView"><value>main</value> </property>
<property name="commandClass"><value>com.kang.test.RegisterInfor</value></property>
<property name="pages">
<list>
<value>main</value>
<value>register1</value>
<value>register2</value>
<value>register3</value>
</list>
</property>
</bean>
<!--InternalResourceViewResolver-->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<!--SimpleUrlHandlerMapping-->
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hehe.htm">registerController</prop>
</props>
</property>
</bean>
</beans>
在这个配置文件里,所有的舰艇都来自web.xml文件,这里进一步进行监听,凡是以/hehe.htm作为提交目的的都将被registerController进行处理。
3)RegisterController
package com.kang.test;
import org.apache.log4j.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractWizardFormController;
public class RegisterController extends AbstractWizardFormController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(RegisterController.class);
private String successView;
private String cancelView;
public RegisterController(){
logger.info("--------RegisterController init----start--");
//setPages(new String[] {"main.jsp", "register1.jsp", "register2.jsp", "register3.jsp"});
//this.successView="success.jsp";
//this.cancelView="main.jsp";
logger.info("--------RegisterController init----end----");
}
public String getSuccessView() {
logger.info("--------RegisterController getSuccessView()------");
return successView;
}
public void setSuccessView(String successView) {
this.successView = successView;
}
public String getCancelView() {
logger.info("--------RegisterController getCancelView()------");
return cancelView;
}
public void setCancelView(String cancelView) {
this.cancelView = cancelView;
}
public ModelAndView processFinish(HttpServletRequest req, HttpServletResponse res, Object command, BindException errs) throws Exception {
logger.info("-----processFinish-----start-----");
RegisterInfor registerInfor = (RegisterInfor) command;
logger.info("-----processFinish-----registerInfor:"+registerInfor);
logger.info("-----processFinish-----end-----");
return new ModelAndView(this.getSuccessView(), "registerInfor", registerInfor);
}
public ModelAndView processCancel(HttpServletRequest req, HttpServletResponse res, Object command, BindException errs) throws Exception {
logger.info("-----processCancel-----");
return new ModelAndView(this.getCancelView());
}
}
4)RegisterInfor 是一个普通的bean,负责存贮整个流程中需要提交的信息,他在多个步骤中使用。
package com.kang.test;
import java.io.UnsupportedEncodingException;
import org.apache.log4j.Logger;
public class RegisterInfor {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(RegisterInfor.class);
private String name;
private int age;
private char sex;
private String adress;
private String phone;
private String email;
private String favor;
public RegisterInfor(){
logger.info("--------RegisterInfor init------");
}
public String getAdress() {
logger.info("--------getAdress()------");
return adress;
}
public void setAdress(String adress) {
logger.info("--------setAdress------adress:"+adress);
this.adress = StringUtil.changeStringCharSet(adress, "ISO-8859-1", "GBK");
logger.info("--------adress:"+this.adress);
}
public int getAge() {
logger.info("-------getAge-------");
return age;
}
public void setAge(int age) {
logger.info("-------setAge-------age:"+age);
this.age = age;
}
public String getEmail() {
logger.info("-------getEmail-------");
return email;
}
public void setEmail(String email) {
logger.info("-------setEmail-------email:"+email);
this.email = email;
}
public String getFavor() {
logger.info("-------getFavor-------");
return this.favor;
}
public void setFavor(String favor) {
this.favor=StringUtil.changeStringCharSet(favor, "ISO-8859-1", "GBK");
logger.info("-------setFavor-------favor:"+this.favor);
}
public String getName() {
logger.info("-------getName-------");
return this.name;
}
public void setName(String name) {
this.name = StringUtil.changeStringCharSet(name, "ISO-8859-1", "GBK");
logger.info("-------setName-------name:"+this.name);
}
public String getPhone() {
logger.info("--------getPhone------");
return phone;
}
public void setPhone(String phone) {
logger.info("-------setPhone-------phone:"+phone);
this.phone = phone;
}
public char getSex() {
logger.info("-------getSex-------");
return sex;
}
public void setSex(char sex) {
logger.info("-------setSex-------sex:"+sex);
this.sex = sex;
}
}
5)mian.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<FORM action="hehe.htm" method="post" name="dsada">
<TABLE>
<TBODY>
<TR>
<TD>
注册信息,请认真填写!
<input type="submit" value="下一步" name="_target1" align="center"/>
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
<br>
</body>
</html>
6)register1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<title>My JSP 'second.jsp' starting page</title>
</head>
<body>
<table>
<TR>
<TD>
User infor:
</TD>
</TR>
<TR>
<TD>姓名:
<c:out value="${registerInfor.name}" />
</TD>
</TR>
<TR>
<TD>年龄:
<c:out value="${registerInfor.age}" />
</TD>
</TR>
<TR>
<TD>
地址:
<c:out value="${registerInfor.adress}" />
</TD>
</TR>
<TR>
<TD>email:
<c:out value="${registerInfor.email}" />
</TD>
</TR>
<TR>
<TD>电话:
<c:out value="${registerInfor.phone}" />
</TD>
</TR>
<TR>
<TD>喜好:
<c:out value="${registerInfor.favor}" />
</TD>
</TR>
</table>
</body>
</html>
7)register2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html>
<head>
<title>My JSP '2.jsp' starting page</title>
</head>
<body>
<FORM action="hehe.htm" method="post" name="dsadas">
<TABLE>
<TBODY>
<TR>
<TD>
地址:
<INPUT name="adress" type="text" />
</TD>
</TR>
<TR>
<TD>
电话:
<INPUT name="phone" type="text" />
</TD>
</TR>
<TR>
<TD>
电子邮件:
<INPUT name="email" type="text" />
</TD>
</TR>
<TR>
<TD align="center">
<INPUT type="submit" value="上一步" name="_target1" />
<INPUT type="submit" value="下一步" name="_target3" />
<INPUT type="submit" value="取消" name="_cancel" />
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
</body>
</html>
8)register3.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html>
<head>
<title>My JSP '3.jsp' starting page</title>
</head>
<body>
<FORM action="hehe.htm" method="post" name="dsadas">
<TABLE>
<TBODY>
<TR>
<TD>
喜好:
<br>
<TEXTAREA cols="40" rows="8" name="favor"
style="background-color:D7F8AB"></TEXTAREA>
</TD>
</TR>
<TR>
<TD align="center">
<INPUT type="submit" value="上一步" name="_target2" />
<INPUT type="submit" value="完成" name="_finish" />
<INPUT type="submit" value="取消" name="_cancel" />
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
</body>
</html>
9)success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<title>My JSP 'second.jsp' starting page</title>
</head>
<body>
<table>
<TR>
<TD>
User infor:
</TD>
</TR>
<TR>
<TD>姓名:
<c:out value="${registerInfor.name}" />
</TD>
</TR>
<TR>
<TD>年龄:
<c:out value="${registerInfor.age}" />
</TD>
</TR>
<TR>
<TD>
地址:
<c:out value="${registerInfor.adress}" />
</TD>
</TR>
<TR>
<TD>email:
<c:out value="${registerInfor.email}" />
</TD>
</TR>
<TR>
<TD>电话:
<c:out value="${registerInfor.phone}" />
</TD>
</TR>
<TR>
<TD>喜好:
<c:out value="${registerInfor.favor}" />
</TD>
</TR>
</table>
</body>
</html>
10)还有个字符处理的方法:
package com.kang.test;
import java.io.UnsupportedEncodingException;
public class StringUtil {
public static String changeStringCharSet(String str,String oldCharSet,String toCharSet){
String temp="";
try {
temp = new String(str.getBytes(oldCharSet),toCharSet);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return temp;
}
}
全部的代码,发布以下就可以运行!呵呵!