Springmvc框架
一、介绍Springmvc
1.介绍框架的设计原理和功能
springmvc -- spring全家桶中的一员!专门负责mvc的c框架!
springmvc 和 spring 和 mybatis ssm!
回顾mvc:
mvc设计模式
springmvc既然负责的controller!它简化controller层的操作!
核心功能: 1.简化获取请求参数
2.简化相应的数据(json/转发/重定向)
2.组成部分
1.核心处理器 DispatcherServlet (Servlet)
/
负责接受请求!调用其他的组件完成本次相应,最终由它把相应给到前端!
2.处理器映射器 RequestMapping
内部读取了当前项目controller以及他们对应的路径!
DispatcherServlet先找到requestmapping,它根据路径找到对应的contoller!返回给核心控制器!
3.处理Handler
handler就是contoller称呼!controller不用在继承httpservlet!
直接就是一个普通的类!直接通过特殊的方式指定一个对应的路径就可以!
DispatcherServlet接受请求参数!通过mapping查找,adapter适配 反射调用的!
4.处理器适配器 RequestAdapter
它出现的位置在核心处理器和handler之间!他是具体帮助我们简化获取参数的还有相应json数据中间件!
5.视图解析器 ViewResolver
当我们转发或者重定向到当前项目的页面的时候!视图解析器帮助我们找到完成的视图路径,并解析交给
DispatcherServlet,再进行返回!
拼接完整路径转发到对应的资源!
json 视图解析器没用!
handler(){
return "index";
}
ViewResolver
前缀从/WEB-INF/html/
后缀 .html
webapps
web-inf
html
index.html
xx.html
页面 HTML/JSP
外部无法访问!
内部可以转发
3.框架的实现步骤(执行流程)
一次请求的执行流程!
二、Springmvc框架的初体验
步骤1:
spring ioc di
spring mvc
servlet
servlet-api
jsp-api
步骤2:
1.声明核心处理器DispatcherServlet
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!--
共同点: 都拦截!
/ 不处理 jsp的请求
/* 所有都处理
-->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.把其他核心组件进行ioc操作
dispatcherServlet只会找 ioc容器的核心组件对象!
handler --> controller
<context:compnent-scan base-package="com.itqf.contoller"
处理器映射器
处理器适配器
视图解析器
<!-- controller handler -->
<context:component-scan base-package="com.itqf.controller" />
<!-- 处理器映射器 处理器适配器 视图解析器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
<!-- user -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/" />
<property name="suffix" value=".jsp" />
</bean>
3.编写handler controller
任何类都可以成为Controller
1.类必须被ioc管理
2.处理器适配器中进行注册
@RequestMapping(路径)
类和方法
类和方法都添加了!
访问方法的路径: 类的/方法的路径!
4.加载配置文件 初始化webapplicationcontext容器
利用的dispactherservlet init方法!
不是固定的命名,需要告知加载的配文件!
<servlet>
<init-param> --> init ServletConfig
<param-name>contextConfigLocation
<param-value>classpath:配置文件的名称,配置文件的名字
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-web.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
三、SpringMVC框架的常用注解
1.@RequestMapping()
位置:类/方法
含义:配置用户访问路径! 处理器映射器中进行注册!
@RequestMapping("user") / @RequestMapping(value="user")
实验结果:
类选择性添加!一般情况类上添加用于区分功能模块 /user /product /car
方法必须添加!但是可以路径不写! 路径不写代表默认!
内部属性:
value 访问路径 配置多个路径 value = {"","",""} / value = ""
path 访问路径 配置多个路径 path = {"","",""} / path = ""
method 指定请求方式 method = {RequestMethod.POST,RequestMethod.GET}
produces 指定返回数据的类型和编码格式 防止乱码 produces = "json/application;charset=utf-8
2.@请求方式Mapping
@PostMapping("logout") == @RequestMapping(value = "logout",method = RequestMethod.POST)
3.@ResponseBody
想直接返回字符的时候或者返回json的时候!
4.介绍下方法的语法
public void/String/自定义类型 方法名(形参){
return "";
}
void:没有任何返回,需要你自己response自己写返回!下载!
string:
1.如果有@ResponseBody返回一个字符串
2.转发 默认
3.重定向
return "redirect:/mvc/user/logout";
return "user"; //转发
return "forward:/user";
自定义类型:
Student / User 后期会转成json!
形参:可以接受请求参数