SpringMVC 配置 & 初识 & 注解 &重定向与转发
初识
在web.xml 中注册DispatcherServlet


<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 关联一个springmvc配置文件 xxx-servlet.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- /匹配所有的请求 不包括.jsp--> <!-- /*匹配所有的请求 包括.jsp--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
View Code
在资源包中添加springmvc-servlet.xml


<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="//www.springframework.org/schema/beans" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="//www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 匹配url去处理--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceView"> <!-- 前缀--> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 后缀--> <property name="suffix" value=".jsp"/> <!-- 所以到时我们转发的时候只需给核心名字就行,避免写路径--> </bean> <bean id="/hello" class="com.ljm.controller.HelloController"/> </beans>
View Code
HelloController类


import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mv = new ModelAndView(); mv.addObject("msg","HelloSpringMVC"); mv.setViewName("hello"); //WEB-INF/jsp/hello.jsp return mv; } }
View Code
启动失败的话,若是代码无问题 显示404什么的可以看下IDEA的项目发布中,有没有添加lib有关依赖
添加后,在maven里面clean下生命周期 , 重启tomcat 就行
——————————————————————————————————————————————–
使用注解开发
web.xml


<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="//xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="//xmlns.jcp.org/xml/ns/javaee //xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 关联一个springmvc配置文件 xxx-servlet.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- /匹配所有的请求 不包括.jsp--> <!-- /*匹配所有的请求 包括.jsp--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
View Code
springmvc-servlet.xml


<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="//www.springframework.org/schema/beans" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xmlns:mvc="//www.springframework.org/schema/mvc" xmlns:context="//www.springframework.org/schema/context" xsi:schemaLocation=" //www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans.xsd //www.springframework.org/schema/context //www.springframework.org/schema/context/spring-context.xsd //www.springframework.org/schema/mvc //www.springframework.org/schema/mvc/spring-mvc.xsd "> <!-- 自动扫描包,指定包下的注解生效,由IOC容器统一管理--> <context:component-scan base-package="com.ljm.controller"/> <!-- 让SpringMVC不处理静态资源 css,js,html,mp3 4--> <mvc:default-servlet-handler/> <!-- 自动完成之前bean的两个实例注入--> <mvc:annotation-driven/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceView"> <!-- 前缀--> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 后缀--> <property name="suffix" value=".jsp"/> <!-- 所以到时我们转发的时候只需给核心名字就行,避免写路径--> </bean> </beans>
View Code
controller


@Controller //完成之前bean的注册作用 //@RequestMapping("/hello") //@RequestMapping可以作用于类 也可以作用于方法 一般选后者 两者都有的话url地址要叠加 public class HelloController { @RequestMapping("/hello") //真实访问地址 项目名/*/hello public String hello666(Model model){ //封装数据 model.addAttribute("msg","hello anno"); return "jojohello"; //会被视图解析器处理 jsp目录下的jsp文件 } }
View Code
JSON格式返回的话用注解@RestController
视图(.jsp)可以被复用
重定向与转发