springMVC

  1. springmvc中有专用于页面跳转的controller,不会对请求做任何处理,直接跳转页面:
    <!-- 对处理请求的controller进行映射 -->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="start.do">startController</prop>
                <prop key="login.do">loginController</prop>
                <prop key="userLogin.do">userLoginController</prop>
            </props>
        </property>
    </bean>
    
    <!-- controller的配置 -->
    <bean id="startController" class="com.yawn.controller.StartController"></bean>
    
    <!-- 直接跳转页面的controller -->
    <!--  
         <bean id="loginController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"></bean>
     -->
    <bean id="loginController" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
        <property name="viewName" value="login"></property>
    </bean>
  1. 封装表单参数的controller: 可继承AbstractCommandController实现:
package com.yawn.contrller;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;

import com.yawn.entity.User;

public class UserLoginController extends AbstractCommandController {

    public UserLoginController() {
    }

    @Override
    protected ModelAndView handle(HttpServletRequest request,
            HttpServletResponse response, Object object, BindException exception)
            throws Exception {
        System.out.println((User)object);
        return null;
    }
    
    
    @Override
    protected void initBinder(HttpServletRequest request,
            ServletRequestDataBinder binder) throws Exception {
        
        // 当遇到Date类型的数据要绑定时,就会用这个编辑器进行转换;没有日期类型时可以不用重写此方法
        binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
        
    }

}

其中,对表单进行封装的类型还需要配置:

<!-- 接收表单数据的controller,并将表单数据绑定到User对象中 -->
    <bean id="userLoginController" class="com.yawn.contrller.UserLoginController">
        <property name="commandClass" value="com.yawn.entity.User"></property>
    </bean>

运行结果(2001年12月12日):

User [no=34434, name=fed, password=ddd, date=Wed Dec 12 00:00:00 SGT 2001]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏yukong的小专栏

【java并发编程实战1】何为线程安全性线程安全性

多线程问题,一直是我们老生常谈的一个问题,在面试中也会被经常问到,如何去学习理解多线程,何为线程安全性,那么大家跟我的脚步一起来学习一下。

683
来自专栏cnblogs

knockoutjs 上自己实现的flux

在knockoutjs 上实现 Flux 单向数据流 状态机,主要解决多个组件之间对数据的耦合问题。 一、其实简单 flux的设计理念和实现方案,很大程度上人借...

1948
来自专栏河湾欢儿的专栏

vue 入门

vue 的发展史 2013.12.24 发布0.7.0 2014.1.27发布0.8.0 2014.2.25 发布0.9.0 2014.3.24发布0....

441
来自专栏深度学习计算机视觉

Spring常见面试题整理

1.什么是Spring? Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的...

4704
来自专栏Android 研究

Android Handler机制1之Thread

每一个进程都有自己的独立的一块内存空间、一组资源系统。其内部数据和状态都是完全独立的。进程的优点是提高CPU的运行效率,在同一个时间内执行多个程序,即并发执行。...

582
来自专栏java技术学习之道

Java线程面试题合集(含答案)

1314
来自专栏MyBlog

Effective.Java 读书笔记(4)非实例化

有时你想要编写一个类,这个类只是静态方法和静态域的组成,这样的一个类获得一个糟糕的名声因为一些人滥用他们为了避免对对象的术语进行思考,但是他们的确是有用的

602
来自专栏大内老A

WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇]

在《上篇》中,我通过使用Delegate的方式解决了服务调用过程中的异常处理以及对服务代理的关闭。对于《WCF技术剖析(卷1)》的读者,应该会知道在第7章中我通...

1915
来自专栏程序猿DD

基于Consul的分布式锁实现

我们在构建分布式系统的时候,经常需要控制对共享资源的互斥访问。这个时候我们就涉及到分布式锁(也称为全局锁)的实现,基于目前的各种工具,我们已经有了大量的实现方式...

2415
来自专栏服务端思维

状态机设计

状态机中,每个状态有着相应的行为,随着行为的触发来切换状态。其中一种做法是使用二维数组实现状态机机制,其中横坐标表示行为,纵坐标表示状态,具体的数值则表示当前的...

772

扫描关注云+社区