SpringMVC框架实现Handler处理器的三种写法

一、SpringMVC中的处理器

配置完SpringMVC的处理器映射器,处理适配器,视图解析器后,需要手动写处理器。关于处理器的写法有三种,无论怎么写,执行流程都是①处理映射器通过@Controller注解找到处理器,继而②通过@RequestMapping注解找到用户输入的url。下面分别介绍这三种方式。

package com.gql.springmvc;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/**
 * 类说明:
 * 处理器的三种写法
 * @guoqianliang1998.
 */
@Controller
public class UserController {
 //1.SpringMVC开发方式
 @RequestMapping("/hello")
 public ModelAndView hello(){
 ModelAndView mv = new ModelAndView();
 mv.addObject("msg","hello world!");
 mv.setViewName("index.jsp");
 return mv;
 }

 //2.原生Servlet开发方式
 @RequestMapping("xx")
 public void xx(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
 request.setAttribute("msg", "周冬雨");
 request.getRequestDispatcher("/index.jsp").forward(request, response);
 }

 //3.开发中常用
 @RequestMapping("yy")
 public String yy(Model model){
 model.addAttribute("msg", "双笙");
 return "forward:/index.jsp";//forward写不写都是转发,redirect代表重定向.
 }
}

1.SpringMVC开发方式

 @RequestMapping("/hello")
 public ModelAndView hello(){
 ModelAndView mv = new ModelAndView();
 mv.addObject("msg","hello world!");
 mv.setViewName("index.jsp");
 return mv;
 }

2.Servlet原生开发方式

 @RequestMapping("xx")
 public void xx(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
 request.setAttribute("msg", "周冬雨");
 request.getRequestDispatcher("/index.jsp").forward(request, response);
 }

3.开发中常用的方式

在return的字符串中,forward写不写都是代表转发,redirect则代表重定向。

 @RequestMapping("yy")
 public String yy(Model model){
 model.addAttribute("msg", "双笙");
 return "forward:/index.jsp";
 }

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

(0)

相关推荐

  • mybatis自定义类型处理器TypehHandler示例详解

    前言 当大家使用mybatis作为持久层框架时,在存储和查询数据时,只需要在mapper.xml文件中配置好对应字段的JdbcType和JavaType,mybatis就可以帮我们转化对应的类型.这背后是有mybatis内置的类型转换器做转换(可见源码TypeHandlerRegistry).但是有时候,我们会对某些字段做特殊处理,比如加密和解密.状态转换.类型转换等.这个时候我们需要自定义类型转换器. 类架构 从上面的图中可以看出MyBatis中整个类型处理器实现架构,TypeHandler接

  • SpringMVC框架实现Handler处理器的三种写法

    一.SpringMVC中的处理器 配置完SpringMVC的处理器映射器,处理适配器,视图解析器后,需要手动写处理器.关于处理器的写法有三种,无论怎么写,执行流程都是①处理映射器通过@Controller注解找到处理器,继而②通过@RequestMapping注解找到用户输入的url.下面分别介绍这三种方式. package com.gql.springmvc; import java.io.IOException; import javax.servlet.ServletException;

  • React组件的三种写法总结

    React 专注于 view 层,组件化则是 React 的基础,也是其核心理念之一,一个完整的应用将由一个个独立的组件拼装而成. 截至目前 React 已经更新到 v15.4.2,由于 ES6 的普及和不同业务场景的影响,我们会发现目前主要有三种创建 React 组件的写法:1. ES5写法React.createClass,2. ES6写法React.Component,3. 无状态的函数式写法(纯组件-SFC). 你们最钟爱哪种写法呢?萝卜青菜各有所爱~ 每个团队都有自己的代码规范和开发模

  • Android应用闪屏页延迟跳转的三种写法

    闪屏页也称之为欢迎页.在打开一个App时,我们第一眼看到的往往是一个闪屏页面,之所以叫闪屏页,是因为它出现之后会短暂地停留几秒钟再跳转到其他页面.闪屏页除了使用户体验更好外,还能给app留出初始化数据的时间.下面,是我总结的闪屏页的三种写法. 准备工作 打开Android Studio,新建一个projectMyStudy,新建一个SplashActivity并在清单文件中将其设置为启动Activity.在布局文件中将SplashActivity的背景设置为一张图片(可以是手机壁纸). <?xm

  • Gson序列化指定忽略字段的三种写法详解

    目录 1. transient关键字 2. expose注解 3. 自定义排查策略ExclusionStrategy 在我们日常使用json序列化框架过程中,经常会遇到在输出json字符串时,忽略某些字段,那么在Gson框架中,要想实现这种方式,可以怎么处理呢? 本文介绍几种常见的姿势 1. transient关键字 最容易想到的case,就是直接借助jdk的transient关键字来修饰不希望输出的对象,如 @Data @AllArgsConstructor @NoArgsConstructo

  • Angularjs中controller的三种写法分享

    前言 在Angular中,Directive.Service.Filter.Controller都是以工厂方法的方式给出,而工厂方法的参数名对应着该工厂方法依赖的Service.angularjs中controller其实就是一个方法,它有三种写法,下面来一起看看吧. 第一种: <pre name="code" class="javascript">var AppController = ['$scope', function($scope){ $sco

  • js自调用匿名函数的三种写法(推荐)

    第一种: (function(){ console.log('hello world") })() 第二种: (function(){ console.log('hello world') }())  第三种: !function(){ console.log('hello world') }() 以上这篇js自调用匿名函数的三种写法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 详解Android 检测权限的三种写法

    本文介绍了详解Android 检测权限的三种写法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 权限检测生效条件: targetSdkVersion 以及 compileSdkVersion 升级到 23 及以上 运行 Android 系统 6.0 及以上 三种检测权限写法: public static boolean checkPermission1(Context context, String[] permissions) { PackageManager p

  • angular1.x ui-route传参的三种写法小结

    如下所示: .state('classrooms',{ url: '/classrooms/:id' }) .state('classrooms',{ url: '/classrooms/{id}' }) .state('activities',{ url: '/activities', params: { id: { value: 42} } }) localhost:3000/#/classrooms/3 function ClassroomController($stateParams){

  • pytorch实现特殊的Module--Sqeuential三种写法

    我就废话不多说了,直接上代码吧! # -*- coding: utf-8 -*- #@Time :2019/7/1 13:34 #@Author :XiaoMa import torch as t from torch import nn #Sequential的三种写法 net1=nn.Sequential() net1.add_module('conv',nn.Conv2d(3,3,3)) #Conv2D(输入通道数,输出通道数,卷积核大小) net1.add_module('batchno

  • 详解Vue 单文件组件的三种写法

    JS构造选项写法 export defaul { data, methods, ...} JS class写法 @Component export default class Cpn extends Vue{ counter = 0 //data add(){ //methods this.counter += 1 } } TS class写法 @Component export default class Cpn extends Vue{ @Prop(Number) sum : number

随机推荐