SpringMVC核心类和注解
springMVC最重要的就是前端控制器DispatchServlet了。他是整个springMVC应用的核心。
需要将它配置在web.xml中。
1.DispatchServlet的配置
<!--配置前端控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化加载配置文件 spring ioc 初始化-->
//如果没有配置init-param,应用程序默认会到WEB-INF目录下找servletName-servlet.xml的配置文件
//servletName指的是前端控制器的名称
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!--标记容器是否在启动的时候就加载这个servlet。
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。-->
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.Controller注解类型:使用该注解时不需要实现Controller接口。只需要将该注解标注在类上面就表示他是一个控制器了,然后通过spring的扫描机制找到该类就行,<context:component-scan>
与实现接口相比较,使用注解可以同时处理多个请求,而使用接口一次只能处理一个请求。
3.RequestMapping注解类型
RequestMapping用于映射一个请求或者一个方法。可以标注在类上,也可以标注在方法上。
例如
@Controller
@RequestMapping("/jason")
public class FirstController {
@RequestMapping("/test")
public String handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Model model)
throws Exception {
model.addAttribute("msg", " hello springMVC "); return "redirect:http://www.baidu.com";
}
}
请求路径则变为http://localhost:8080/springmvc/jason/test 3.1RequestMapping注解的属性
RequestMapping注解的属性有7个,都是可选属性,默认为value,例如
@RequestMapping(value="/jason"),但是当只有一个属性的时候,与@RequestMapping("/jason")是一样的
4.组合注解
GetMapping:匹配get方式的请求
PostMapping:匹配post方式的请求
PutMapping:匹配put方式的请求
DeleteMapping:匹配Delete方式的请求
PatchMapping:匹配Patch方式的请求 get和post的区别:
最直接的区别,GET请求的参数是放在URL里的,POST请求参数是放在请求body里的;
GET请求的URL传参有长度限制,而POST请求没有长度限制;
GET请求的参数只能是ASCII码,所以中文需要URL编码,而POST请求传参没有这个限制
详情参见:https://www.cnblogs.com/logsharing/p/8448446.html 5.请求处理方法的参数类型和返回类型
请求处理方法的参数类型比较多,这里主要说返回类型 请求处理的返回类型主要有:
ModelAndView,Model,Map,View,String,void,HttpEntity<?>或者ResponseEntity<?>,Callable<?>,DeferredResult<?> 最常见的就是ModelAndView,String,void了
其中ModelAndView类型中可以添加Model数据,并指定视图,
String类型的返回值可以跳转视图但是不能携带数据,要与Model参数一起搭配使用。
而void类型主要在异步请求时使用,它只返回数据,不会跳转视图。 String类型除此之外还可以(redirect)重定向和(forward)请求转发。 6.视图解析器
<!--定义视图解析器-->
<bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
可以设置前缀和后缀,将路径简化。
SpringMVC核心类和注解的更多相关文章
- SpringMVC核心类DispatcherServlet
配置DispatcherServlet 要使用SpringMVC,必须在web.xml中配置好这个DispatcherServlet类 <!-- spring框架必须定义ContextLoade ...
- 1.2(Spring MVC学习笔记) Spring MVC核心类及注解
一.DispatcherServlet DispatcherServlet在程序中充当着前端控制器的作用,使用时只需在web.xml下配置即可. 配置格式如下: <?xml version=&q ...
- 【Spring注解驱动开发】AOP核心类解析,这是最全的一篇了!!
写在前面 昨天二狗子让我给他讲@EnableAspectJAutoProxy注解,讲到AnnotationAwareAspectJAutoProxyCreator类的源码时,二狗子消化不了了.这不,今 ...
- SpringMVC入门(基于注解方式实现)
---------------------siwuxie095 SpringMVC 入门(基于注解方式实现) SpringMVC ...
- SpringMVC中的常用注解
RequestParam 作用: 用于 将请求参数区数据 映射到 功能处理方法的参数上. 属性: value 请求参数中的名称 required 请求参数中是否必须提供此参数. 默认值: ...
- @ResponseBody 返回json字符串的核心类是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter,它使用了Jackson 这个开源的第三方类库。主要是以下两个jar包:jackson-core-asl-1.6.4.jar;jackson-mapper-asl-1.6.4.jar
@ResponseBody 返回json字符串的核心类是org.springframework.http.converter.json.MappingJacksonHttpMessageConvert ...
- SpringMvc核心流程以及入门案例的搭建
1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...
- springmvc入门基础之注解和参数传递
一.SpringMVC注解入门 1. 创建web项目2. 在springmvc的配置文件中指定注解驱动,配置扫描器 <!-- mvc的注解驱动 --> <mvc:annotation ...
- springmvc学习笔记(常用注解)
springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...
随机推荐
- UVALive - 3523 - Knights of the Round Table
Problem UVALive - 3523 - Knights of the Round Table Time Limit: 4500 mSec Problem Description Input ...
- cumprod、prod函数
1.prod函数 prod函数用于求矩阵元素的积,其调用格式如下. (1)B=prod(A):若A为向量,则返回所有元素的积:若A为矩阵,则返回各列所有元素的积. (2)B=prod(A,dim):返 ...
- JS深度判断两个对象字段相同
代码: /** * 判断此对象是否是Object类型 * @param {Object} obj */ function isObject(obj){ return Object.prototype. ...
- Linux内存管理 (19)总结内存管理数据结构和API
专题:Linux内存管理专题 关键词:mm.vaddr.VMA.page.pfn.pte.paddr.pg_data.zone.mem_map[]. 1. 内存管理数据结构的关系图 在大部分Linux ...
- echarts中饼图显示百分比
通过echarts制作饼图,需要通过鼠标移动到对应的扇形才能才看数值和百分比. 解决这个问题参考的是将鼠标移动到扇形上的显示方法: tooltip : { trigger: ' ...
- __init__和__new__的区别
根据官方文档: __init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值. __new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法. 也 ...
- mybatis乱码
单个字段 <property name="url" value="jdbc:mysql://127.0.0.1:3306/db?characterEncoding= ...
- 使用Gradle构建web工程配置详解
- python+opencv读取视频,调用摄像头
引用 import cv2 import numpy 创建摄像头对象 cap = cv2.VideoCapture("videoTest/test1.mp4") #参数为视频文件目 ...
- ABP中的拦截器之EntityHistoryInterceptor
今天我们接着之前的系列接着来写另外一种拦截器EntityHistoryInterceptor,这个拦截器到底是做什么的呢?这个从字面上理解是实体历史?这个到底是什么意思?带着这个问题我们来一步步去分析 ...