Spring MVC 是Spring 提供的一个实现了Web MVC设计模式的轻量级的Web框架。它与Struts2框架一样,都属于MVC框架。
Spring MVC 具有以下特点:
- 是Spring 框架的一部分,可以方便地利用Spring所提供的其他功能。
- 灵活性强,易于与其他框架集成
- 提供了一个前端控制器DispatcherServlet ,是开发人员无须额外开发控制器对象
- 可自动绑定用户输入,并能正确的转换数据类型
- 内置了常见的校验器,可以校验用户输入。如果校验不能通过,那么就会重定向到输入表单。
- 支持国际化。可以根据用户区域显示多国语言。
- 支持多种视图技术。它支持JSP、Velocity和FreeMarker等视图技术。
- 使用基于XML的配置文件,在编辑后,不需要重新编译应用程序。
一、Spring MVC应用
1.创建项目SpringMVC项目 并引入JAR包
2.配置前端控制器
在web.xml中配置Spring MVC的前端控制器 DispatcherServlet
在file:///Users/kangxg/Downloads/spring-framework-4.3.6.RELEASE/docs/spring-framework-reference/html/mvc.html
中找到配置说明 复制并修改:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<servlet>
<!-- 配置前端控制器 -->
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!-- 初始化时加载配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!-- 表示容器在启动时立即加载servlet -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
// 拦截所以URL,并交由 DispatcherServlet 处理
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
3. 创建Controller类
在src目录下创建com.kangxg.controller包 并创建KXGController控制器类
package com.kangxg.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class KXGController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
{
ModelAndView mav = new ModelAndView();
mav.addObject("msg", "这是我的第一个Spring MVC程序");
mav.setViewName("/WEB-INF/jsp/first.jsp");
return mav;
}
}
4.创建Spring MVC的配置文件
在src目录下,创建配置文件 springmvc-config.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!-- 配置处理器Handle-->
<bean name = "/kxgController" class = "com.kangxg.controller.KXGController"/>
<!-- 处理器映射-->
<bean class =" org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class =" org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<bean class =" org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>
5.在 WEB-INF 创建jsp文件夹 并创建frist.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>入门程序</title>
</head>
<body>
<%=request.getAttribute("msg") %><br/>
<hr/>
${ msg}
</body>
</html>
6 debug 运行程序
这时候会出现 404 和 org.springframework.web.servlet.PageNotFound noHandlerFound 错误信息,这是因为没有指定要访问的页面名称
地址中输入:http://localhost:8080/SpringMVC/kxgController
这时候能正常访问了!