首页 > 代码库 > ACCP8.0课程第二学年-spring mvc简易教程(一)
ACCP8.0课程第二学年-spring mvc简易教程(一)
1.关于spring-mvc
1.1 我们一般常见的mvc框架其实都是由总控制器,子控制器,总控制器配置文件和子控制器文件所组成
1.2 spring-mvc总控制器为DispatchServlet
1.3 spring-mvc的子控制器是基于@Controller注解与@RequestMapping注解构建成的
1.4 lib包下必须有这个几个jar aopalliance-1.0.jar commons-logging-1.2.jar jackson-annotations-2.8.7.jar jackson-core-2.8.7.jar jackson-databind-2.8.7.jar
以上包可以从maven仓库下载
1.5 相关jar包
2.关于DispatchServlet
2.1 初始化DispatchServlet时它会默认在你的WEB-INF下寻找<servlet-name>-servlet.xml来初始化配置(这个是总控制器配置文件)
2.2 DispatchServlet它有一个contextConfigLocation属性便于查找总控制器配置文件的位置
3.关于ContextLoaderListener和WebApplicationContext
3.1 ContextLoaderListener是一个监听器,通常要在web.xml中的节点context-param节点中配置contextConfigLocation属性
3.2 这个监听器最主要的作用是在contextConfigLocation中配置bean初始化到WebApplicationContext中
3.3 WebApplication最主要的作用是在web程序中获得spring配置的bean
4.@Controller与@RequestMapping
4.1 @Controller表明是一个Java类为子控制器,它需要与component-scan标签配合使用(注意:一定要在总控制器配置文件里能找到该标签)
4.2 spring不需要你的controller继承自任何与servlet api耦合的类
4.3 @RequestMapping是将URL中一段地址映射到类或者方法上,因此它可以定义到类或者方法上
4.4 @RequestMapping几个重要的属性,value用于获取url的地址信息,method:接收哪种HTTP请求方式(POST,GET)
4.5 在spring 4.3+版本可以使用 @PostMapping @GetMapping注解来表示接受哪种http请求方式
4.6 如果@requestMapping注解的方法返回值不建议为void
5.关于Resolving View(视图解析器)
5.1 视图解析器故名思议就是视图层用何种方式展现(是jsp还是freemarker等)
5.2 常用的视图解析器包括以下几种
1)InternalResourceViewResolver 通常返回JSP的视图解析 2)XmlViewResolver 返回XML 3)FreeMarkerViewResolver 返回freemarker模板
5.3 通常我推荐大家用 ContentNegotiatingViewResolver解析器,它可以根据不同的情况返回不同的视图(具体看配置文件示例)
6.关于<mvc:annotation-driven>
6.1 这个会给我提供许多框架已经做好了的功能,比如转换Json 数据绑定等工作
6.2 通过它实现了以下功能:比如@DateTimeformat,@Valid(javabean验证),各种converter等
web.xml配置:
注意以下几点:1.总控制器(DispatchServlet)的配置 2.总控制器的配置文件路径 3.ContextLoaderListener的配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<!-- 加载spring bean的配置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
<!-- 配置监听器 注意该监听器的作用 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
<!-- 总控制器的配置 --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
总控制器配置文件的配置: 1.在这里要配置视图解析器 2.<mvc:annotation-driven> 3.<context:component-scan>主要扫描@RequestMapping与@Controller
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <mvc:annotation-driven/> <context:component-scan base-package="com.lyrk.springmvc.controller"/> <!-- 配置通用的视图解析--> <bean id="viewResolver" class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="viewResolvers"> <list> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB‐INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </list> </property> <property name="defaultViews"> <list> <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/> </list> </property> </bean> </beans>
package com.lyrk.springmvc.controller; import com.lyrk.springmvc.entity.ApplicationBean; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import javax.servlet.http.HttpSession; /** * Created by niechen on 17/5/22. */ @Controller public class FirstController {
//这里不建议返回值void @RequestMapping(value = "/testWebApplicationContext", method = RequestMethod.GET) public void test(HttpSession session) {
//注意在controller里如何获取Bean WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(session.getServletContext()); ApplicationBean applicationBean = webApplicationContext.getBean(ApplicationBean.class); System.out.println(applicationBean.getName()); } @GetMapping("/findOwner/{ownId}") public String findOwner(@PathVariable String ownId) { System.out.println("ownId:"+ownId); return "index"; } }
ACCP8.0课程第二学年-spring mvc简易教程(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。