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注解定义的控制器有如 ...
随机推荐
- Kubernetes - kubectl proxy
最近在玩flink部署在k8s上,但是k8s以前没玩过,参照前几天写的文章可部署一个简单的k8shttps://www.cnblogs.com/felixzh/p/9726244.html 在参照fl ...
- TCP/IP及内核参数优化调优
Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等.如下配置是写在sysctl.conf ...
- python3 random模块
import random '''随机获取从0-1之间的小数'''print(random.random())print(format(random.random(), ".2f" ...
- Oracle 史上最全近百条Oracle DBA日常维护SQL脚本指令
史上最全近百条Oracle DBA日常维护SQL脚本指令 https://mp.weixin.qq.com/s?__biz=MjM5MDAxOTk2MQ==&mid=2650281305&am ...
- Linux内存管理 (16)内存规整
专题:Linux内存管理专题 关键词:内存规整.页面迁移.pageblock.MIGRATE_TYPES. 内存碎片的产生:伙伴系统以页为单位进行管理,经过大量申请释放,造成大量离散且不连续的页面.这 ...
- 在Bootstrap开发框架中使用dataTable直接录入表格行数据
在Winform开发的时候,我们很多时候可以利用表格控件来直接录入数据,不过在Web上较少看到,其实也可以利用dataTable对象处理直接录入表格行数据,这个可以提高数据的录入方便,特别是在一些简单 ...
- jQuery实现单击某个标签改变样式
1.HTML代码,如下图: <p class="sc_member_recharge_form"> <span class="selected" ...
- Python——模块——时间模块
1.time模块 (1)时间戳 >>> time.time() 1472016249.393169 (2)将时间戳转换成当前时间元祖 time.localtime()time.gmt ...
- vivado place30-378
AR# 60131 Vivado Placer - [Place 30-378] Input pin of input buffer has an illegal connection to a lo ...
- nginx的location配置root、alias用法和区别
root & alias区别root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上root的处理结果是:root路径 ...