Spring Mvc
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。 – 百度百科
spring mvc是一个轻量级,基于请求响应的mvc框架。
1、spring mvc优势
- 与Spring无缝衔接 (spring ioc,aop)
- 约定优于配置
- 简单的 junit 测试
- 拦截器
- 本地化,国际化
- 简化开发等、
2、Spring mvc了解简单结构
Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet
来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。(图片来自)
3、Dispatcher Servlet(Spring控制器)
控制器是唯一的你需要在Java web部署描述文件(即web.xml文件)中配置的Servlet。
Spring提供的前端控制器,所有的请求都有经过它来统一分发。分发前需要通过HandlerMapping Controller映射寻找处理器。
4、hello world
编写第一个使用spring mvc框架web程序
-
创建目录、文件
- indexController.java - 此类作为控制器实现Controller接口,处理web请求
- springmvc-servlet.xml - springmvc配置文件
- Index.jsp - 渲染文件
-
导入maven依赖
<!-- spring mvc依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.8.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.2.8.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.8.RELEASE</version> </dependency> <!-- 后续RandomStringUtils类使用需要的jar--> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <!-- Tomcat jar包--> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency>
-
编写第一步创建的文件内容
web.xml
配置web.xml文件<?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_4_0.xsd" version="4.0"> <!--配置Spring控制器--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
IndexController.java
package cn.study; 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 IndexController implements Controller { public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { // 传入渲染视图 ModelAndView modelAndView = new ModelAndView("index.jsp"); // 存储数据 modelAndView.addObject("message","hello world!"); // 返回模型 return modelAndView; } }
springmvc-servlet.xml
<?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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 创建HandlerMapping文件indexController类的Controller映射--> <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <!-- 表示访问路径/index会交给id=indexController的bean处理--> <prop key="/index">indexController</prop> </props> </property> </bean> <!-- 配置IndexController类bean--> <bean id="indexController" class="cn.study.IndexController"></bean> </beans>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%> <h1>${message}</h1>
-
生成lib目录 project stucture-> Artifacts-> available Elements 右击->put inoutput root
-
配置tomcat 访问 项目下index 例如我的:http://localhost:8080/spring_mvc/index
-
5、使用注解实现Springmvc框架
在原项目上修改springmvc-servlet.xml
为
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 创建视图解析器 规定显示的视图在web根目录下的后缀为jsp的文件 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- <property name="prefix" value="/WEB-INF/page/" /> 代表规定显示的视图在WEB-INF/page目录下 -->
<property name="prefix" value="" />
<property name="suffix" value=".jsp" />
</bean>
<!--扫描cn.study包下有@Controller注解的类-->
<context:component-scan base-package="cn.study" />
</beans>
IndexController.java
package cn.study;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
public class IndexController {
@RequestMapping("/index") // 渲染地址 web根目录下文件
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 传入渲染视图
ModelAndView modelAndView = new ModelAndView("index");
// 存储数据
modelAndView.addObject("message","hello world!");
// 返回模型
return modelAndView;
}
}
访问: http://localhost:8080/spring_mvc/index
效果:
今天先到这吧 写的不好请谅解