Spring MVC(2):控制器详解

一、Spring MVC概述 1 三层架构和MVC模型 1.1 三层架构 我们的开发架构一般都是基于C/S架构(客户端/服务器)、B/S架构(浏览器/服务器)两种形式。 在Java EE开发中,几乎全都是基于B/S架构的开发。在B/S架构中包括三层架构:表现层、业务层、持久层。 表现层:即web层。负责接收客户端请求,向客户端响应结果。 通常客户端使用http协议请求web层,web层接收http请求,完成http响应。故其可分为两层: 控制层:负责接收请求; 展示层:负责展示结果。 表现层依赖业务层,接收到客户端请求一般会调用 阅读详情

控制器的基本使用


在 Spring MVC 中,在 POJO 类定义注解  @Controller ,再在mvc配置文件中通过   <context:component-scan /> 扫描相应的类包,就可以使一个 POJO 类变成一个可以处理 HTTP 请求的控制器(具体代码见:http://blog.youkuaiyun.com/al_assad/article/details/79012665);
用户可以创建数量不限的控制器,用于分别处理不同的业务请求,每个控制器拥有多个处理请求的方法;



使用 @RequestMapping  映射请求


@RequestMapping 注解用于将请求映射到对应的控制器方法中,这个过程包含一系列的映射规则,这些映射规则包括4个方面的信息: 请求URL、请求参数、请求方法、请求头;
@RequestMapping 的 value 、method、params、headers 参数分别表示映射条件:请求URL、请求方法、请求参数、请求报文头;

1)通过 URL 映射

 
@Controller
public class UserController {
    
    @RequestMapping("/user/createUser")  // 等同于 @RequestMapping(path="/user/createUser")
    public String createUser(){
        ....
        return "user/createSuccess";
    }
}
以上 createUser 方法响应 “Web应用部署路径/user/createUser” 的HTTP请求,如: “ http://www.assad.site/user/createUser”  ;

可以在控制器头标注基础 @RequestMapping,以下示例中 createUser 响应 “ Web应用部署路径/user/createUser ” 请求;
 
@Controller
@RequestMapping("/user")  //以下所有 @RequestMapping 的响应 url 基于该 @RequestMapping 定义的 url
public class UserController {
    
    @RequestMapping("/createUser")   //响应 "/user/createUser" 
    public String createUser(){
        ....
        return "user/createSuccess";
    }
}

@RequestMapping 除了支持标准的URL之外,还支持  带【 ?、*、**】 占位符的Ant 风格的 URL 和  带 {xxx} 占位符的 URL
/user/*/createUser:匹配类似  “user/aa/createUser”;
/user/**/createUser:匹配类似 “user/aa/bbb/createUser”,“user/createUser”;
/user/createUser??:匹配类似 “user/createUseraa”;
/user/{userId}:匹配类似 “user/123”;
/company/{companyId}/user/{userId}:匹配类似  “/company/123/user/12345”;
 其中 {xxx} 占位符可以使用 @PathVariable 标注绑定的变量名;
 
@Controller
@RequestMapping("/user")  
public class UserController {
    
    @RequestMapping("/{userId}")   
    public String showDetail( @PathVariable("userId") String userId){
        System.out.println(userId);   //如果请求为 "/user/201502012",则 userId = "201502012"
        ...
        return ...;
    }
}

2)通过请求方法、请求参数,请求报头映射

 
@Controller
@RequestMapping("/user")  
public class UserController {
    
    /*使用请求方法和请求参数映射请求
    以下例子映射一个GET请求: /user/test1?userId=xxx */
    @RequestMapping(path="/test1",method=RequestMethod.GET,params="userId")  
    public String test1 ( @RequestParam("userId") String userId){   //使用 @RequestParam 标注请求参数
        System.out.println(userId); 
        ...
        return "user/test1";
    }
    
     /*使用报头映射请求*/
    @RequestMapping(path="/test2",headers="content-type=text/*")  
    public String test2(){
        ....
        return "user/deleteUserSuccess";
    }
    
}
对于使用请求方法、请求参数映射,可以使用 @RequestParam 对请求参数绑定到方法入参中;
params、headers 参数接受简单表达式,以 params 示例:
params="userId" :请求参数为  “userId”; 
params="!userId" :请求参数不为 “userId”;
params="userId!=123" :请求参数为 “userId” 且参数值不为 123;
params={"userId","gameId"} :请求参数为 “userId”,“gameId”;



请求处理方法签名


  • 入参:Spring MVC 对控制器方法请求的限制是很宽松的,必要时可以对方法入参标注相应的注解(如:@PathVariable、@RequestParam、@RequestHeader 等);
  •  返回值:一般处理方法的返回值类型为ModelAndView或 String,ModelAndView 包含模型和逻辑视图名,String 代表一个逻辑视图名;

① 使用 @RequestParam 绑定请求参数值
@RequestParam 注解包含以下参数:
  • value:参数名;
  • required:是否必须,默认为 true;
  • defaultValue:默认参数名,不常用;
 
@RequestMapping(path="/handle1",method= RequestMethod.POST,params={"userName","password"})
public String handle(@RequestParam("userName") String userName,
                      @RequestParam(value="password", required=false) String passowrd){
    User user = new User(userName,passowrd);
    .....
}
② 使用 @CookieValue 绑定请求中的 Cookie 值
 
@RequestMapping("/handle2")
public String handle(@CookieValue("userid") String userId){
    ......
}
③ 使用 @Request 绑定请求报文头的属性值
 
@RequestMapping("/handle3")
public String handle(@RequestHeader("Accept-Language") String acceptLanguage){
    ....... 
}
④ 使用命令/表单对象绑定请求的参数值
命令/表单对象不需要实现任何接口,仅仅是一个拥有若干属性的POJO,以下代码中 User 为一个命令/表单对象,类结构为 User(userName,password) ;
假设响应的 “/handle4”  请求具体为 "/handle4?userName=assad&password=1234",以下方法会将其正确映射为一个 User(userName=“assad”,password="1234");
 
@RequestMapping("/handle4")
public ModelAndView handle2(User user){
     return new ModelAndView("success","user",user);
}
⑤ 使用 Servlet API 对象作为入参
在 Spring MVC 中,控制器类可以不依赖于任何 Servlet API 对象,但是可以将这些 Servlet API 对象绑定到入参中;
 
@RequestMapping("/handle5")
public String handle3(HttpServletRequest request, @RequestParam("userId") String userId){
    request.getSession().setAttribute("userId",userId);  //通过 HTTPServletRequest 对象设置 Session
    return "success";
}
⑥ 使用 I/O 对象作为入参
Spring MVC 允许控制器的处理方法使用 java.io.InputStream / java.io.Reader,java.io.OutputStream / java.io.Writer 作为方法入参,Spring MVC 将获取 ServletRequest 的 InputStream/Reader,ServletReponse 的 OutputStream/Writer ,然后传递给控制器的处理方法;
 
RequestMapping("/handle5")
public void handle5(OutputStream out) throws IOException {
   Resource resource = new ClassPathResource("/image/imageTest.jpg");  //复制图片文件给ServletRequest的输出流
   FileCopyUtils.copy(resource.getInputStream(),out);
}


模型数据处理


Spring MVC 提供了以下多种途径输出模型:
  • ModelAndView:当处理方法返回值类型为ModelAndView时,方法体可以通过该对象添加模型数据;
  • @ModelAttribute:在方法入参标注该注解后,入参的对象就会放置在该数据模型中;
  • Map 和 Model:如果方法入参为 org.springframework.ui.Model、org.springframework.ui.ModelMap、java.util.Map 时,当处理方法返回时,Map中的数据会自动添加到模型中;
  • @SessionAttribute:将模型中的某个属性暂存在 HttpSession 中,以便多个请求共享该属性;

① ModelAndView
ModelAndView 包含视图信息和模型数据,可以简单把它的数据模型看成一个 Map<String,Object> 对象;
 
@RequestMapping("/handle4")
public ModelAndView handle2(User user){
    ModelAndView mav = new ModelAndView();
     mav.setViewName("success");
     mav.addObject("user",user);
     return mav;
}
//或者
@RequestMapping("/handle4")
public ModelAndView handle2(User user){
    ModelAndView mav = new ModelAndView("success");
    mav.addObject("user",user);
    return mav;
}
//或者
@RequestMapping("/handle4")
public ModelAndView handle2(User user){
    return new ModelAndView("success","user",user);
}
Spring MVC 会把 ModelAndView 的数据模型放置到 ServletRequest 中,在 JSP页面获取该数据模型有以下的方式:
 
<%--通过EL表达式的Request域隐含对象获取--%>
<h1>your name is <c:out value="${user.name}"/> </h1>
<h1>your name is ${user.name} </h1>
    
<%--通过JSP隐式对象获取--%>
<h1>your name is <c:out value="request.getAttribute('user').getName()"/> </h1>
注意:由于ModelAndView中的模型数据在经过Web服务器时,可能由于Web服务器的字符编码和程序编码不统一,会造成类似中文字符乱码,有一个解决方式是将字符串放置到模型时强制编码格式,如下:
 
@RequestMapping("/handle4")
public ModelAndView handle2(User user){
   if(user == null)
       return new ModelAndView("fail","error",new String("用户对象为空值".getBytes(),"UTF-8"));  
    //将中文字符强制转为与程序编码相同的”UTF-8“
   else
       return new ModelAndView("success","user",user);
}

② @ModelAttribute
@ModelAttribute 注解可以直接将方法入对象直接添加到模型中;
 
@RequestMapping("/handle4")
public String handle7(@ModelAttribute("user") User user){
    user.setId("20130602613");
    return "success";
}
除了在控制器控制方法入参中使用 @ModelAttribute 之外,还可以在方法定义中使用该注解,Spring MVC 在调用给目标处理方法之前,会先逐个调用在方法级别上标注了@ModelAttribute 的方法, 如下示例:
 
@ModelAttribute("user")  
public User getUser(){
    User user = new User();
    user.setId("20130602613");
    return user;
}
@RequestMapping("/handle4")
public String handle7(@ModelAttribute("user") User user){
    return "success";
}

③ Map / Model 

Spring MVC 在内部使用了一个 org.springframework.ui.Model 接口储存模型数据,该接口的功能类似于 java.util.Map,Spring MVC 在调用方法之前会创建一个隐含的 Model 数据模型对象,作为模型数据的储存容器, 如果处理方法的入参为 Map 或 Model 类型,Spring MVC 会将该隐含模型的引用传递给这些入参;
 
@RequestMapping("/handle9",params={"name","password","credits"})
public String handle(User user,ModelMap modelMap){
    modelMap.put("user",User);   //将user放置到ModelMap中
    return "showUser";
}
//等同于:
@RequestMapping("/handle9",params={"name","password","credits"})
public ModelAndView handle(User user){
    return new ModelAndModel("showUser","user",user);
}
//等同于:
@RequestMapping("/handle9",params={"name","password","credits"})
public String handle(@ModelAttribute("user") User user){
    return "showUser";
}

④ @SessionAttribute

如果需要在多个请求之间共用某个模型的属性数据,可以通过在控制器类中标注@SessionAttributes ,Spring MVC 会将模型中的对应属性暂存到 HttpSession 中;
 
//同个控制器内请求重定向,同时携带模型的示例
//整个路由过程:响应 "/user/handle1" 请求,输出到 "/user/showUser" 逻辑视图
@Controller
@RequestMapping("/user")
@SessionAttributes("user")  //自动将本处理器任何处理方法属性名为"user"的模型属性透明地储存到 HttpSession 中;
public class UserController {
​
    @RequestMapping("/handle1")
    public String handle1(@ModelAttribute("user") User user){  //获取到的 User 对象模型会自动添加到隐含对象user中
        user.setName("assad");
        return "redirect:/user/handle1";   //转发到 "/user/handle2" 请求,此时携带了隐含对象user
    }
​
    @RequestMapping("/handle2")
    public String handle2(ModelMap modelMap, SessionStatus sessionStatus){
        User user = (User)modelMap.get("user");   //读取隐含模型中"user"模型的数据
        if(user != null ){
            user.setName("Vancy");
            sessionStatus.setComplete();   //清除本处理器对应的会话属性,即清除HttpSession中的"user"模型
        }
        return "/user/showUser";
    }
}


请求转发和重定向

Spring MVC 对于控制器中控制方法的请求转发和重定向提供了很方便的支持,在请求路由前加上 ”forward:“表明该请求为转发请求,前加上 “redirect:”表明该请求为重定向请求;
在 Spring MVC 控制器中转发请求和重定向请求的区别在于:
  • 转发(forward):控制器内转发请求、接受请求的处理方法之间隐含对象共享;客户端浏览器中的页面URL不变,;
  • 重定向(redirect):控制器内重定向请求、接受请求的处理方法之间隐含对象不共享;客户端浏览器中的页面URL改变为重定向后的URL;
转发(forward)
 
@Controller
@RequestMapping("/user")
public class UserController {
    
   @RequestMapping(value="/handle1",params="userId")
    public String handle1(HttpServletRequest request,@RequestParam("userId") String userId){
       request.setAttribute("userId",userId);
       return "forward:/user/handle2";  //转发请求到"/user/handle2"
   }
   @RequestMapping("/handle2")
    public String handle2(HttpServletRequest request){
        return "/user/showUser";   //在"user/showUser"中 ${userId} 可以获取到"/user/handle1"的请求参数"userId"值;
   }
}
重定向(redirect )
 
   @RequestMapping("/handle1")
    public String redirectToBaidu(){
       return "redirect:https://www.baidu.com";  //重定向到百度
   }
​
   @RequestMapping("/handle2",method=RequestMethod.GET,params="keyword")
    public String baiduSearch(@RequestParam("keyword") String keyword){
        return "redirect:https://www.baidu.com?word="+keyword;   //重定向到百度,并进行关键词搜索
   }

基于Spring MVC 5.2.3版本的Web应用示例项目,主要用于演示Spring MVC框架的核心功能和特性,包括控制器开发、数据绑定、类型转换、视图解析、会话管理等。 本文介绍了一个基于Spring MVC 5.2.3的Web应用示例项目。项目采用Maven构建,主要演示了Spring MVC的核心功能,包括控制器开发、数据绑定、类型转换、视图解析等。项目结构清晰,包含控制器层、实体层、自定义组件层和视图层。关键功能包括多种数据回显方式、自定义类型转换器、会话属性管理等。该项目适合Spring MVC初学者学习,通过运行示例可以快速掌握框架的核心概念和使用方法。项目文档详细说明了各文件作用,并提出了扩展改进方向,如添加RESTful API、集成安全框架等。 阅读详情

相关推荐

手把手教你绕过Incapsula reese84防护:从JS反混淆到动态Token生成全流程

本文深入解析了以Incapsula reese84为代表的现代Web客户端挑战防护机制,详细介绍了从JS反混淆、算法逆向到动态Token生成的全流程实战方法。文章系统阐述了如何通过模拟浏览器指纹、移植关键算法或嵌入JS引擎来构建自动化应对策略,并提供了稳健的令牌管理与系统架构设计思路,帮助开发者在合规前提下提升自动化工具的适应性。

jenkins8butler的博客 518

Springmvc 控制器的作用

Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC( 控制反转)和 AOP(面向切面编程)为内核。 mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。 mybatis通过xml或注解的方式将要执行...

weixin_44033440的博客 2410

绑定压力的计算方法

压强的公式为P=F/S,其中P为ACF要求的本压压强范围,S为受压面积,F为本压压头施加的力。绑定参数需要按线体按压头进行DOE确认,并使用DOE确认好的参数按压头重新绑定标识好送ACF厂商实测固化率、粒子变形的情况,避免绑定参数导致的异常,在绑定参数的设定过程中温度和时间可以使用仪器实测但绑定的压力则需要换算。工程上绑定压力换算的原则是:1、FPC属于柔性物料,柔性物料的受压面积按FPC绑定的受压面积=FPC绑定的长度。一、工程上FOG FPC本压压力换算(柔性材料以挤压的接触面积=受力面积)F=P。

weixin_53757859的博客 1534

@RequestMapping用法详解

    一、@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 <servlet>    <servlet-name>servletName</servlet-name>  &nb...

TwcatL 1571

IEEE Access投稿全流程:从LaTeX模板到Overleaf实战(附避坑指南)

本文详细解析了向IEEE Access期刊投稿的完整流程,重点介绍了如何使用LaTeX模板在Overleaf平台上高效撰写和格式化论文。内容涵盖模板选择、作者信息填写、公式图表排版、参考文献管理(BibTeX)以及投稿前的最终检查清单,旨在帮助研究者,尤其是LaTeX新手,规避常见技术问题,顺利完成符合期刊严格要求的稿件提交。

open4的博客 576

ArcGIS+PLUS+InVEST三件套实战:从零搞定土地利用变化与碳储量预测(附完整数据包)

本文详细介绍了如何整合ArcGIS、PLUS模型和InVEST模型,构建土地利用变化与碳储量预测的完整研究流水线。通过多情景模拟和生态系统服务评估,提供从数据准备到结果验证的实战指南,助力研究者高效完成生态评估项目。

weixin_30399821的博客 544

SpringMVC由浅入深day01_10@RequestMapping_11controller方法的返回值

10@RequestMapping   10.1Url路径映射 @RequestMapping(value="/item")或@RequestMapping("/item) value的值是数组,可以将多个url映射到同一个方法 定义controller方法对应的url,进行处理器映射使用。通过RequestMapping注解可以定义不同的处理器映射规则。   10.2...

weixin_33693070的博客 277

【Pico手势开发实战】基于SteamVR串流与MRTK3的跨平台交互方案

本文详细介绍了在Pico设备上,结合SteamVR串流与微软MRTK3框架,实现高效跨平台手势交互开发的完整方案。该方案通过在PC端运行Unity项目并串流至头显,利用MRTK3封装的手势识别与交互组件,大幅提升了开发调试效率与性能上限,并确保了未来向其他OpenXR设备的良好兼容性。

weixin_29001683的博客 217

SpringMVC(4)

SpringMVC(4) 基础实现 创建新项目 Group Id为cn.tedu.spring, Artifact Id为SPRINGMVC-02, Packaging为war, 需要实现:访问http://localhost:8080/SPRINGMVC-02/reg.do可以打开注册页面,在注册页面中,至少设计用户名、密码、年龄、手机号码、电子邮箱这5个输入框及提交按钮,访问http://localhost:8080/SPRINGMVC-02/login.do可以打开登录页面,在登录页面中,至少设计用

qq_43575044的博客 271

BGE-Reranker-v2-M3介绍

重排序模型介绍

吉米_王 5894

解决k8s核心组件calico pod资源不创建问题

解决k8s核心组件calico pod资源不创建问题 1.问题描述 由于K8S集群Master节点故障,导致calico网络组件虽然处于Running状态,但是一直无法准备就绪,如下图所示 calico-node-lpt7h运行在master节点,第一时间紧急处理方法就是将其pod删除,让K8S自动重建该pod,使整个集群快速恢复 但是就当我将calico-node-lpt7h pod删除后,该pod始终无法自建,就好像是从来没有这个pod似的 2.解决方法 期初排查时,我觉得可能是由于当前master

江晓龙的博客 4807

Session的使用

Session的使用。

weixin_48909429的博客 307

一次把 PRIV mode 讲透:从 ABAP 内存分配链路到定位与治理

ABAP系统进入PRIV模式的本质是Extended Memory耗尽时转向Heap内存的应急机制。该现象会导致工作进程被独占,系统吞吐量下降。触发条件包括系统EM资源池耗尽或单个用户超过配额阈值。关键参数em/address_space_MB和ztta/roll_extension需协同调整。典型症状包括SM50显示PRIV状态、响应延迟和内存dump。治理需双管齐下:系统侧合理配置内存参数,代码侧优化内存使用模式,如分页处理、减少大内表操作和下推聚合逻辑。PRIV模式应作为异常信号而非常态目标,健康系统

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 205

Spring入门(十四):Spring MVC控制器的2种测试方法

作为一名研发人员,不管你愿不愿意对自己的代码进行测试,都得承认测试对于研发质量保证的重要性,这也就是为什么每个公司的技术部都需要质量控制部的原因,因为越早的发现代码的bug,成本越低,比如说,Dev环境发现bug的成本要低于QA环境,QA环境发现bug的成本要低于Prod环境,Prod环境发现bug的成本最高,这也是每个研发人员最不愿意遇到但永远避不掉的现实。虽然不能完全避免,但我们可以对自己的代码进行充分的测试,降低bug出现的几率。

cxytony的博客 1033

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Spring Boot 2.x实战40 - Spring Web MVC 12 - Web MVC配置(控制器方法参数和返回值处理设置-使用HandlerMethodArgumentResolver)

3.6 方法参数和返回值处理设置 在控制器方法里,我们可以使用@RequestBody、RequestEntity获得请求体里的数据,使用@ResponseBody、ResponseEntity对返回体进行处理。 在Spring MVC中可以通过实现HandlerMethodArgumentResolver接口来实现对控制器方法参数进行处理,通过实现HandlerMethodReturnValueHandler可以对方法的返回值进行处理。 若同时需要对请求参数和返回返回体进行处理的话,则继承Abstract

汪云飞记录本 361

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

第2章 Spring MVC基础:3、基于注解的控制器

学习目标: 基于注解的控制器 学习大纲: 一、Controller注解类型 二、RequestMapping注解类型 三、编写请求处理方法 四、Controller接收请求参数的常见方式 五、重定向与转发 六、应用@Autowired进行依赖注入 七、@ModelAttribute 学习内容: 在使用Spring MVC进行Web应用开发时,Controller是Web应用的核心。Controller实现类包含了对用户请求的处理逻辑,是用户请求和业务逻辑之间的桥梁,是Spring MVC框架的核心部分,

weixin_43820675的博客 910

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Spring 2.5 MVC中基于注解的Controller控制器

Spring 2.5 MVC中基于注解的Controller控制器         Spring 2.5发行版本中,开始相对比较全面的支持注解,通过注解可以大大简化Java EE应用开发的配置、精简开发人员的工作量从而提高开发效率。对于Spring MVC而言,我认为注解带来的好处更多: 1. 开发人员对Controller的代码实现变得更加灵活,不需要继承任何AbstractControl...

liyuandong的博客 331

Spring MVC中2种映射控制器的方法

在使用Spring MVC的过程中,比较重要的一个关键知识点是使用Controller的方法。本文介绍了通过配置文件和通过注解Annotation,这2种使用Controller的方法。 1.通过配置文件applicationContext.xml 这种方法比较原始。之所以说原始,应为现在的框架中已经不常用了。这种方法的缺点是,每次增加/修改/删除Controller,都要到配置文件里添加如下...

招财猫_Martin 的专栏 3986

【Spring MVC学习笔记】2:基于接口的控制器,基于注解的控制器,mvc:resource元素

基于接口的控制器 2.5以前的的Spring MVC控制器需要实现 org.springframework.web.servlet.mvc.Controller 接口,实现其 ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse); ...

大桔骑士的学习笔记 504

小探Spring 2.5 MVC中基于注解的Controller控制器

转自:http://dakulaliu.iteye.com/blog/234045   1. 开发人员对Controller的代码实现变得更加灵活,不需要继承任何AbstractController等Controller。 2. 可以通过@Controller注解声明将该类的实例添加到Spring 容器中管理,而无需通过Spring MVC的配置文件来配置,大大简化了Spring MVC相关的...

iteye_289的博客 177

迁移应用进入基于Annotation MVC的spring 2.5

Spring 2.5引入了基于Annotation配置的MVC controllers。这篇简短的文章介绍了需要如何迁移你的spring 2.0应用到spring 2.5,至少是需要迁移MVC相关的应用。首先保证你已经将spring-webmvc.jar放在你的classpath内,DispatcherServlet不再是spring.jar的一部分,现在是在一个单独的模块内。任何controll

yzhjisji的专栏 531

Spring MVC详解(四)接口控制器详解(2)

4.5、ServletForwardingController 将接收到的请求转发到一个命名的servlet,具体示例如下:   java代码: Java代码   package cn.javass.chapter4.web.servlet;   public class ForwardingServlet extends HttpServlet {

逸轩 545

为什么选择Spring MVC及demo

我所认知的Java MVC轻量级框架有Struts1,Struts2,Spring MVC。 Struts2是Struts1和WebWork的技术基础上进行了合并的全新的框架。所以我们就不说Struts1了。 Struts2与Spring MVC区别: 1.核心控制器:Struts2采用的是Filter,Spring mvc采用的servlet来处理用户请求。 2.控制器实例:sp

Mike_cw的博客 4197
上一篇: Spring MVC(1):文件配置 & 使用示例
下一篇: Spring MVC(3):数据转换 & 格式化
Al_assad
博客等级 码龄11年 591粉丝 341原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值