Spring学习笔记——Spring MVC表单控制器(SimpleFormController)

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

Project的目录结构如下:

Spring学习笔记——Spring MVC表单控制器(SimpleFormController)

(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 ,输入“早上好”,点击提交,可得到下面的结果

Spring学习笔记——Spring MVC表单控制器(SimpleFormController)

你可能感兴趣的:(spring mvc)