您的位置:首页 > 编程语言 > Java开发

spring-MVC学习第一天--08-06

2020-08-06 13:38 225 查看

spring-MVC

spring集成web环境

spring中,想要获取bean就必须先要获取容器对象,而获取容器对象得代码就都是类似的,所以要抽取相同代码,
简化开发
实现原理:由于web项目在初始化时会自动创建servletContext对象,可以使用监听器去监听servletContext
对象的创建,创建容器对象并存入servletContext域对象中

流程
1.maven导jar包坐标(此jar封装了监听器和获取容器对象的工具类)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.3.RELEASE</version>
</dependency>
2.配置监听器并且设置servletContext的初始值(用来加载)

示例
** web.xml的配置
<context-param> // 设置初始值,用以解耦(解除以配置文件名来获取容器对象获取时的耦合)
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener> // 配置监听器,监听servletContext对象的创建
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

** web层
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
WebApplicationContext app =
WebApplicationContextUtils.getWebApplicationContext(req.getServletContext());
** WebApplicationContextUtils是获取容器对象的工具类
** 参数传入servletContext对象
assert app != null;
UserService userService = app.getBean(UserService.class);
userService.save();
}

** service层和dao层为标准bean的注入,将dao注入到service,配置文件扫描对应包

spring-MVC基本配置

具体原理
spring-MVC将原本servlet类中公共部分抽取成前端控制器(DispatcherServlet参数获取响应等逻辑),而特有
部分为后端控制器(controller),请求在发送过去之后会被前端控制器拦截,调用处理器映射器组件,处理器映射
器返回处理器对象等,然后前端控制器在调用处理器适配器,处理器适配器会调用处理器(即后端后控制器,我们编
写的),最后返回MovenAndView对象,前端控制器在调用视图解析器,视图解析器解析返回view,最后渲染

重要注解细节
@RequestMapping 请求映射 可作用在类上相当于一级路径,作用在方法上相当于二级路径
** 参数 method 请求方法匹配
** params 参数表达式(匹配参数,数组表示) 如 {"username"} 请求参数必须有username
{"age!=20"} 请求参数age不能为20
controller类中方法返回值处理器返回的MovenAndView对象
** 一些限定 forward 请求转发(默认) 如 return "forward:sueecss.jsp"
redirect 重定向 如 return "redirect:success.jsp"
视图解析器(viewResolver)的配置中前缀和后缀最后解析view时与controller类方法返回值结合,简化书写

具体流程
1.maven导jar坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
2.编写controller类并扫描包和相应的组件配置

示例
** spring-mvc.xml配置文件 (主要配置web层内容)
<context:component-scan base-package="controller"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
// 配置视图解析器
<property name="prefix" value="/jsp/"/> // 配置view前缀
<property name="suffix" value=".jsp"/>  // 配置view后缀
</bean>

** web.xml配置(主要配置DispatcherServlet)
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>  // 加载spring-mvc配置文件
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>  // DispatcherServlet的拦截映射匹配路径
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

** contorller类
@Controller  // 将此类交给容器管理
@RequestMapping("/user")
public class UserController {

@RequestMapping(value = "/query",method = {RequestMethod.GET},params = {"username"})
// 请求路径/user/query get方法 参数必须有username才能进行匹配
public String save(){
System.out.println("web层方法调用了");
return "one";  // 转发跳转到指定路径 相当于/jsp/one.jsp访问
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: