我的第一个SpringMVC项目
MVC简介:
- springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。
- springmvc是一个基于mvc的web框架。
SpringMVC 执行流程
- 用户发送请求至前端控制器DispatcherServlet。
- DispatcherServlet收到请求调用HandlerMapping处理器映射器。
- 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
- DispatcherServlet调用HandlerAdapter处理器适配器。
- HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
- Controller执行完成返回ModelAndView。
- HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
- DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
- ViewReslover解析后返回具体View。
- DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
- DispatcherServlet响应用户。
MVC核心jar包
- commons-logging-1.1.1.jar jstl-1.2.jar
- spring-aop-3.2.0.RELEASE.jar
- spring-aspects-3.2.0.RELEASE.jar
- spring-beans-3.2.0.RELEASE.jar
- spring-context-3.2.0.RELEASE.jar
- spring-context-support-3.2.0.RELEASE.jar
- spring-core-3.2.0.RELEASE.jar
- spring-expression-3.2.0.RELEASE.jar
- spring-jdbc-3.2.0.RELEASE.jar
- spring-orm-3.2.0.RELEASE.jar
- spring-test-3.2.0.RELEASE.jar
- spring-tx-3.2.0.RELEASE.jar
- spring-web-3.2.0.RELEASE.jar
- spring-webmvc-3.2.0.RELEASE.jar
下面开始编写代码
web.xml文件
<!-- spring mvc的前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<!-- spring handler处理器 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param><!-- 1 -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 启动级别 -->
<load-on-startup>1</load-on-startup><!-- 2 -->
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name><!-- 3 -->
<url-pattern>*.do</url-pattern><!-- 4 -->
</servlet-mapping>
- 配置 springMVC的配置文件路径(默认的路径在WEB-INF里 文件名是servlet-name的值加上“-servlet.xml” 可以不写init-param)
- 这里面的值为0或者大于0时,表示容器在应用启动时就加载这个servlet 。当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。正数的值越小,启动该servlet的优先级越高。
- 这里面的名字需要和上面servlet的servlet-name的值一样
- 拦截的要求 *.do 表示只有.do结尾的URL才会被拦截。具体点击查看url-pattern的使用
springMVC.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:p="http://www.springframework.org/schema/p"
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/context
http://www.springframework.org/schema/context/spring-context.xsd
">
<context:component-scan base-package="com.kz.controller"></context:component-scan><!-- 1 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 2 -->
<property name="prefix" value=""></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
- 开启springMVC controller的注解扫描(在这个目录下的所有配置了注解文件都会被扫描)
- 配置springMVC的视图解析器 里面俩个参数是 可以在springMVC返回的时候在路径上加上的前缀与后缀
controller
package com.kz.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller <!-- 1 -->
public class SpringMVCController {
@RequestMapping("/test.do") <!-- 2 -->
public String test() {
System.out.println("this is spring Controller");
return "success"; <!-- 3 -->
}
}
- 这个注解是告诉 springMVC 这个文件是 controller
- RequestMapping("/test.do")处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。(讲简单了就是配置的路径)
- 返回的地址,因为我之前在 springMVC.xml 的文件中配置了后缀suffix为“.jsp” 所以这里只需写文件名不需加上后缀(.jsp) 当你访问这地址时会转发(默认转发)到success.jsp页面
jsp页面
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
this is success page
</body>
</html>
好啦然后服务器启动起来就行啦 访问地址为 http://127.0.0.1:8080/项目名/test.do