版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SDDDLLL/article/details/87630495
新年的第一篇博客,本来打算前一段时间写,由于学习了新的内容,整理起来费时间所以到现在集中整理一下,加深印象。这篇博客主要是第一个SpringMVC程序2,在这里不牵扯到MyBatis的内容,只是和界面有关,在后续的博客当中会一步一步整合。先看一下Springmvc在Spring中的位置。
从上面可以看到Spring其实是包括SpringMVC的,springMVC只是其中的视图层。
下面直接看例子,看看SpringMVC是如何使用的。首先看一下项目目录结构
一、导入jar包(或maven添加依赖)
在这里是在Spring的基础之上导入两个新的jar。
- Spring-context-support:包含支持UI模板、邮件服务、缓存Cache等方面的类
- Spring-webmvc:对SpringMVC的支持。
二、在web.xml注册中央调度器
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 注册中央调度器 -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定springmvc配置文件的位置以及文件名 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 表示Tomcat服务区在启动时候直接创建Servlet -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
下面解释说明这里面的配置
- servlet-class:全限定类名,这个中央调度器其实就是一个servlet。名称是DispatcherServlet
- init-param:在这里是springmvc的配置文件的位置以及文件名,默认会通过类路径(src下面开始寻找。)
- load-on-startup:他的作用是:是否在web服务器启动的时候创建这个servlet实例,也就是是否在Tomcat服务器启动的时候执行该servlet的init方法,他的值必须是一个整数。(1)当值大于等于0时:表示在Tomcat启动时就加载,数值越小,表示优先级越大。(2)当值小于0或者是没有指定时,表示这个servlet在真正使用到的时候才会去创建。
- url-pattern:指定路径。路径问题下面会详解,在这里先写成*.do。
三、定义处理器controller
package com.fdd.handlers;
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 MyController implements Controller{
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
ModelAndView mv=new ModelAndView();
mv.addObject("message", "hello world");
//mv.setViewName("/WEB-INF/jsp/welcome.jsp");
mv.setViewName("welcome");
return mv;
}
}
四、注册处理器
在这里我们的处理器对应的就是my.do的请求。在这里视图解析器添加了前缀和后缀,如果在这里不指定,那么在MyController.java中就需要指定mv.setViewName("/WEB-INF/jsp/welcome.jsp");
此时执行顺序是这个样。前端浏览器请求my.do页面,那么就会先去web.xml的中央调度器,在中央调度器启动springmvc.xml配置文件,在springmvc配置文件中发现Mycontroller能处理这个请求,那么就会由Mycontroller去处理。
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 注册视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 注册处理器 -->
<bean id="/my.do" class="com.fdd.handlers.MyController"/>
</beans>
五、定义目标页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>welcome</title>
</head>
<body>
${message }<br>
</body>
</html>