spring表单控制器SimpleFormController

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

Project的目录结构以下: java

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

复制代码
    
<% @ 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 spring

复制代码
    
<% @ 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表单里的元素名称一致的 apache

复制代码
    
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的内容 浏览器

复制代码
    
<? 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代码以下 mvc

复制代码
    
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 ,输入“早上好”,点击提交,可获得下面的结果 app

分类
相关文章
相关标签/搜索