alexRain的空间

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

如果每次传入参数都使用HttpServletRequest获取页面元素的值,假如要获取的页面元素值很少时,可以这样做,如果页面元素很多,就要使用很多的HttpServletRequest.getParameter(),显得很繁琐。为了解决这个问题,Spring提供了表单控制器SimpleFormController,把页面form中的元素名称设定为和Bean中的一样,传入的时候,Spring就会自动抓取form中和Bean名称一样的元素值,把它转换成一个Bean,使开发人员可以方便地使用。

Project的目录结构如下:

(1)提交form的页面input.jsp

View Code
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>第一个SpringMVC实例</title>
</head>
<%
String str = (String) request.getAttribute("helloWorld");
%>
<body>
<form name="HelloWorld" action="/myApp/helloWorld.do" method="post">
欢迎语
<input name="msg" type="text" />
<br />
<input type="submit" value="提交" />
</form>
</body>
</html>

(2)输出提交内容的页面show.jsp

View Code
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>第一个SpringMVC实例</title></head>
<%String str=(String)request.getAttribute("yourWords"); %>
<body>
你输入的欢迎语是:
<H1><%=str %></H1>
</body>
</html>

(3)用来存放提交内容更的类HelloWorld.java,注意它有个字段private String msg,是与input.jsp中form表单里的元素名称一致的

View Code
package com.jp.action;

public class HelloWorld {
private String msg=null;

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}
}

(4)Web.xml的配置与上一篇文章中提到的一样,这里需要修改dispatcherServlet-servlet.xml的内容

View Code
<?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="urlMapping"
class
="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="helloWorld.do">helloWorldAction</prop>
</props>
</property>
</bean>
<!-- 定义视图 及JSP路径-->
<bean id="viewResolver"
class
="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.InternalResourceView</value>
</property>
<!-- 定义JSP存放的路径 -->
<property name="prefix">
<value>/jsp/</value>
</property>
<!-- 定义JSP页面后缀 -->
<property name="suffix">
<value>.jsp</value>
</property>
</bean>

<!-- 定义控制器 -->
<bean id="helloWorldAction" class="com.jp.action.SimpleFormControllerAction">
<property name="commandClass">
<value>com.jp.action.HelloWorld</value>
</property>
<property name="viewPage">
<value>show</value>
</property>
</bean>
</beans>

(5)修改控制器代码,使其继承SimpleFormController,SimpleFormControllerAction.java代码如下

View Code
package com.jp.action;

import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

public class SimpleFormControllerAction extends SimpleFormController{
private Logger logger=Logger.getLogger(this.getClass().getName());
private String viewPage;

public String getViewPage() {
return viewPage;
}

public void setViewPage(String viewPage) {
this.viewPage = viewPage;
}

//重写onSubmit方法
public ModelAndView onSubmit(Object command) throws Exception{
HelloWorld helloWorld
=(HelloWorld)command;
Map model
=new HashMap();
//new String...是用来解决中文乱码问题
model.put("yourWords", new String(helloWorld.getMsg().getBytes("iso-8859-1"),"utf-8"));
//返回依赖注入定义的页面
return new ModelAndView(getViewPage(),model);
}

}

最后,在浏览器中打开http://localhost:8080/myApp/jsp/input.jsp ,输入“早上好”,点击提交,可得到下面的结果

posted on 2011-03-10 12:26  alexRain  阅读(4265)  评论(4编辑  收藏  举报