<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>uestc.shengroupId>
<artifactId>springMVCartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>springMVC Maven Webappname>
<url>http://maven.apache.orgurl>
<properties>
<slf4j.version>1.7.6slf4j.version>
<spring.version>4.0.0.RELEASEspring.version>
properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-framework-bomartifactId>
<version>${spring.version}version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
dependency>
<dependency>
<groupId>commons-logginggroupId>
<artifactId>commons-loggingartifactId>
<version>1.1.1version>
dependency>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-log4j12artifactId>
<version>${slf4j.version}version>
<exclusions>
<exclusion>
<artifactId>slf4j-apiartifactId>
<groupId>org.slf4jgroupId>
exclusion>
exclusions>
dependency>
dependencies>
project>
在/WEB-INF/web.xml中作如下代码调整:
<web-app version="2.4" 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>dispatcherServletservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>dispatcherServletservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
web-app>
(1)其中Maven为我们创建的事基于web-app2.3版本,我们手动更改成2.4或更高版本,此处基于2.5版本,http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
(2)配置一个Servlet,名字自己起,class为org.springframework.web.servlet.DispatcherServlet
,DispathcherServlet负责接收请求,查找对应的Controller,接收返回值,显示视图,给客户反应,主要负责整体流程的控制。
(3)配置Servlet拦截的URL。
在web.xml中的指定位置,或默认位置,添加一个新的xml文件,作为DIspatcherServlet的配置文件,其中包括beans、context、mvc三种XSD命名空间。
内容如下:
<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.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<context:component-scan
base-package="com.shen.springmvc">context:component-scan>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/">property>
<property name="suffix" value=".jsp">property>
<`
bean>
beans>
(1)配置Spring的自动扫描功能,
,扫描指定包下的所有类文件,解析成bean。
(2)配置一个指定的bean,InternalResourceViewResolver
是一种视图解析器,把handler方法返回值(String类型)解析成实际的物理视图(JSP、JSTL、HTML)。
(1)创建符合命名规则的包名,如com.shen.springmvc.handlers
(2)创建一个类,负责处理请求的一个Controller,示例如下:
@Controller
public class HelloWorld {
/**
* 1.使用@RequestMapping 注解来映射请求的URL
* 2.返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewReslover 视图解析器,会做如下的解析:
* 通过prefox + returnVal + suffix 这样的方式得到实际的物理视图,然后做转发操作
* /WEB-INF/views/ + success + .jsp
*/
@RequestMapping("/helloworld")
public String hello() {
System.out.println("hello world!");
return "success";
}
}
说明:
(1)使用@Controller注解,标识该类是一个bean,其次我们知道他是一个Controller,使用@Controller而不是@Component。
(2)hello方法负责响应什么URL呢?使用@RequestMapping注解,value为响应的URL,因为可能响应多个URL,则是数组的形式,@RequestMapping(value = { "/helloworld1", "/helloworld2" })
,若只有一个,则可以直接@RequestMapping("/helloworld")
。
(3)在注释中写道,返回值为String类型,被视图解析器解析成前缀+retVal+后缀
,做转发操作。
在/WEB-INF/下创建视图,其中包括视图解析器需要的视图。
/springMVC/src/main/webapp/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
<a href="helloworld">Hello Worlda>
body>
html>
/springMVC/src/main/webapp/WEB-INF/views/success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
<h4>Page success !h4>
body>
html>
采用Tomcat服务器的形式运行,不多说。