zoukankan      html  css  js  c++  java
  • Spring学习笔记——Spring MVC表单控制器(SimpleFormController)

    如果每次传入参数都使用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 ,输入“早上好”,点击提交,可得到下面的结果

  • 相关阅读:
    迁移
    zendframework 2 链接数据库
    zendframework 2
    merge sort and quick sort 自己去理解吧
    ubuntu git 使用
    resumablejs 分块上传 断点续传
    video.js html5 视频播放器
    swfupload 例子
    php 润年 星期 天数
    ubuntu 安装 axel
  • 原文地址:https://www.cnblogs.com/alexrain/p/1979661.html
Copyright © 2011-2022 走看看