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

  • 相关阅读:
    Java实现 LeetCode 69 x的平方根
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 66 加一
    Java实现 LeetCode 66 加一
    CxSkinButton按钮皮肤类
  • 原文地址:https://www.cnblogs.com/alexrain/p/1979661.html
Copyright © 2011-2022 走看看