详解springMVC—三种控制器controller

在springmvc中提供了三种controller的配置,1.针对不需要controller代码的,也就是只起到跳转页面的作用。2.可以接受实体类型的controller。3.可以接受表单数据的controller,它只允许POST提交,在配置文件中需要指定提交FORM,请求成功的FORM。

1.直接转发到页面,不需要添加controller代码。

<bean id="toLogin" name="/toLogin.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
   <!-- 配置所跳转到的视图名称 -->
   <propertynamepropertyname="viewName" value="login"></property>
</bean> 

2.命令控制器,需要指定实体对象类型,在controller中直接接受指定改实体类。

配置文件

<bean name="/comm.do" id="comm"class="com.roy.controller.CommController">
  <!-- 指定接受参数类型-->
  <propertynamepropertyname="commandClass"value="com.roy.model.Person"></property>
</bean> 

controller代码

package com.roy.controller; 

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

import javax.servlet.http.HttpServletRequest;
import javax.xml.crypto.Data; 

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.mvc.SimpleFormController;
import com.roy.model.Person; 

public class FormController extends SimpleFormController {
  @Override
  protected void doSubmitAction(Object command) throws Exception {
    Person p=(Person) command;
    System.out.println(p.toString());
    super.doSubmitAction(command);
  }
}

3.表单控制器,在配置文件中指定了接受的对象,接受的表单页面,以及处理请求成功后的的页面。

只支持POST方式;表单控制器有简单的验证功能,如果提交失败返回表单页面,如果提交成功就跳转到成功页面;有收集表单数据的功能

配置文件

<bean name="/form.do" id="form" class="com.roy.controller.FormController">
  <!-- 指定收集对象类型-->
  <propertynamepropertyname="commandClass"value="com.roy.model.Person"></property>
  <!-- 表单页面-->
  <propertynamepropertyname="formView" value="form"></property>
  <!-- 成功页面-->
  <propertynamepropertyname="successView" value="success"></property>
</bean> 

controller代码

package com.roy.controller; 

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

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController; 

import com.roy.model.Person; 

public class CommController extends AbstractCommandController{ 

  /**
   * 每次请求都会创建一个person对象。根据请求中的参数名和person的属性的set方法
   * 的字符串进行匹配,不区分首字母的大小写。
   */
  @Override
  protected ModelAndView handle(HttpServletRequest arg0,
      HttpServletResponse arg1, Object obj, BindException arg3)
      throws Exception {
    Person p=(Person) obj;
    System.out.println(p.toString());
    return null;
  } 

}

总之有三种controller.1.只起到跳转页面的作用。2.可以接受实体类型的controller。3.可以接受表单数据的controller。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解利用SpringMVC拦截器控制Controller返回值

    背景:需求是在Controller中方法没有实现时,返回模拟结果.主要用于项目初期前台跟后台的交互,Web项目就是在前台发出请求然后后台响应并返回结果.本示例利用拦截器和注解实现跳过执行方法直接返回定义结构的功能. 通过定义一个StringResult注解,在访问方法的时候返回StringResult中的内容.通过Debug注解来定义方法是否要返回StringResult中的内容. Debug默认为TRUE package com.tiamaes.dep.annotation; import j

  • 详解springmvc 中controller与jsp传值

    在springmvc中的controller所对应的函数中,如果需要从*.jsp页面中获取数据,可以自行在函数括号中写,springmvc会自动封装传过来的值. spring-mvc.xml 中加入如下语句: <!-- 自动扫描 --> <context:component-scan base-package="cn.itcast.springmvc.service,cn.itcast.springmvc.web.controller"/> <!-- 注解

  • SpringMVC实现controller中获取session的实例代码

    平时使用springMVC,在方法中访问session中经常很自然地调用Servlet API.用起来非常直观方便,一直没有多考虑什么. 比如这样: @RequestMapping(value = "/logout") public String logout(HttpSession session) { session.removeAttribute("user"); return "/login"; } 但毕竟这样对Servlet API产生

  • SpringMVC中controller返回json数据的方法

    本文实例为大家分享了SpringMVC中controller返回json数据的2种方法,供大家参考,具体内容如下 1.jsp的ajax请求: function getJson(){ $.ajax({ type:"get", dataType:"json", url:"<%=basePath %>getJson", success:function(data){ for(var i=0;i<jsonData.length;i++)

  • 详解springmvc之json数据交互controller方法返回值为简单类型

    当controller方法的返回值为简单类型比如String时,该如何与json交互呢? 使用@RequestBody 比如代码如下: @RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8") @ResponseBody public String ceshijson(@RequestBody String channelId) throws IOException{

  • SpringMVC基于注解的Controller详解

    概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 XML 配置文件中定义请求和 Controller 的映射关系,仅仅使用注解就可以让一个 POJO 具有 Controller 的绝大部分功能 -- Spring MVC 框架的易用性得到了进一步的增强.在框架灵活性.易用性和扩展性上,Spring MVC 已经全面超越了其它的 MVC 框架,伴随

  • SpringMVC Controller 返回值的可选类型详解

    spring mvc 支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void. ModelAndView @RequestMapping("/hello") public ModelAndView helloWorld() { String message = "Hello World, Spring 3.x!"; return new ModelAndView("hello"

  • springMVC如何将controller中Model数据传递到jsp页面

    在action中存放数据,代码如下: @Controller // 加入到IOC容器 //@RequestMapping(value="/topic") public class TopicAction { @Resource(name = "topicServiceImpl") private TopicService topicService; /** * 首页显示 */ @RequestMapping(value="/index") pub

  • 详解SpringMVC Controller介绍及常用注解

    一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注

  • springMVC如何将controller中数据传递到jsp页面

    1> 将方法的返回值该为ModelAndView在返回时,将数据存储在ModelAndView对象中如: newModelAndView("/WEBINF/jsp/showData.jsp","message",message) 其中第一个参数为url,第二个参数为要传递的数据的key,第三个参数为数据对象. 在这里要注意的是 数据是默认被存放在request中的. 示例: @RequestMapping(value="/mad/showData_1

随机推荐