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核心类和注解的更多相关文章

  1. SpringMVC核心类DispatcherServlet

    配置DispatcherServlet 要使用SpringMVC,必须在web.xml中配置好这个DispatcherServlet类 <!-- spring框架必须定义ContextLoade ...

  2. 1.2(Spring MVC学习笔记) Spring MVC核心类及注解

    一.DispatcherServlet DispatcherServlet在程序中充当着前端控制器的作用,使用时只需在web.xml下配置即可. 配置格式如下: <?xml version=&q ...

  3. 【Spring注解驱动开发】AOP核心类解析,这是最全的一篇了!!

    写在前面 昨天二狗子让我给他讲@EnableAspectJAutoProxy注解,讲到AnnotationAwareAspectJAutoProxyCreator类的源码时,二狗子消化不了了.这不,今 ...

  4. SpringMVC入门(基于注解方式实现)

    ---------------------siwuxie095                             SpringMVC 入门(基于注解方式实现)         SpringMVC ...

  5. SpringMVC中的常用注解

    RequestParam 作用: 用于  将请求参数区数据  映射到  功能处理方法的参数上. 属性: value  请求参数中的名称 required   请求参数中是否必须提供此参数. 默认值: ...

  6. @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 ...

  7. SpringMvc核心流程以及入门案例的搭建

    1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...

  8. springmvc入门基础之注解和参数传递

    一.SpringMVC注解入门 1. 创建web项目2. 在springmvc的配置文件中指定注解驱动,配置扫描器 <!-- mvc的注解驱动 --> <mvc:annotation ...

  9. springmvc学习笔记(常用注解)

    springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...

随机推荐

  1. jenkins之Job建立-运行 git 脚本

    新建一个自由风格的项目,运行git脚本 1.点击菜单栏中的“新任务” 2.进入该页面后输入一个项目名称,然后选择“构建一个自由风格的软件项目”,滑动到最底端,点击ok(在左下角) 3.进入下图页面后 ...

  2. day4-python基础-编码相关

    目录 1.编码的历史 2.python 3.x中的bytes与str 3.编码的转换 正文开始 1.编码的历史与发展 1.1编码历史变更 编码可以理解为谍战片中电报的密码本,如果要想让电脑识别要输入的 ...

  3. OpenMP并行程序设计——for循环并行化详解

    在C/C++中使用OpenMP优化代码方便又简单,代码中需要并行处理的往往是一些比较耗时的for循环,所以重点介绍一下OpenMP中for循环的应用.个人感觉只要掌握了文中讲的这些就足够了,如果想要学 ...

  4. 6-4 The present perfect

    1 Summary The present perfect is an important verb tense in English. It is used to talk about things ...

  5. thymeleaf循环

    th:each属性用于迭代循环,语法:th:each="obj,iterStat:${objList}"迭代对象可以是Java.util.List,java.util.Map,数组 ...

  6. Python 使用 matplotlib绘制3D图形

    3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何在Python中使用 matplotlib进行3D图形的绘制,包括3D散点.3D表面.3D轮廓.3D直线( ...

  7. Python——三级菜单

    #三级菜单函数 menu = { '北京':{ 海淀:{ '五道口':{} '中关村':{} '上帝':{} } '昌平':{} '朝阳':{} '东城':{} }, '上海':{} '山东':{} ...

  8. Tensorflow--矩阵切片与连接

    博客转载自:https://blog.csdn.net/davincil/article/details/77893185 函数原型:slice(input_, begin, size, name=N ...

  9. python之函数闭包、可迭代对象和迭代器

    一.函数名的应用 # 1,函数名就是函数的内存地址,而函数名()则是运行这个函数. def func(): return print(func) # 返回一个地址 # 2,函数名可以作为变量. def ...

  10. Windows 7 下安装 docker 应用容器引擎

    文档地址 ====================================== 安装篇 下载工具 https://get.daocloud.io/toolbox/ 下载完成点击安装 (可参考: ...