首先是准备工作,第一个是spring-framework包,第二个是logger包,第三个是用于部署的Tomcat
我用的编译工具是MyEclipse,而Tomcat也会在MyEclipse中配置好用于部署项目
新建一个Web项目,然后将刚刚准备好的包都放到项目\WebContent\WEB-INF\lib目录,刷新项目,就可以看到包都添加到项目中
后面就是要修改web.xml了,如果没有在创建项目时选择添加一个默认的web.xml,那么就要自己手写一个
手写web.xml一定要注意xml的声明和DOCTYPE这些不能写错
DispatcherServlet
DispatcherServlet主要是用来控制URL的映射,在web.xml中添加DispatcherServlet配置即可让其进行对URL的映射.
映射的就是通过Controller中,带有RequestMapping的方法进行映射
/WEB-INF/web.xml
<servlet> <servlet-name>springmvc</servlet-name><!-- 配置DispatcherServlet --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-params> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-config.xml</param-value> </init-params> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name><!-- 使用配置好的DispatcherServlet进行URL映射 --> <url-parrern>/</url-pattern> <!-- 让服务器启动的时候就加载springmvc的配置 --> <load-on-startup>1</load-on-startup> </servlet-mapping>
Controller
controller就是用来处理页面发送到后端的请求,并且根据实际情况返回或不返回信息.
而写好一个控制器方法后,只需要添加RequestMapping,即可让这个方法映射到相应的URL
com.wzh.controller:
//添加@Controller注解,将类标记为控制器
@Controller public class HelloController{ //养成添加log的习惯,调试起来会很有好处 private static final Log logger = LogFactory.getLog(HelloController.class); //添加RequestMapping注解,将方法映射到URL上 @ReuqestMapping(value="/hello") public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { //要习惯于写log logger.info(DEBUG_TAG + " 被调用."); ModelAndView mv = new ModelAndView(); //向model中添加一个message对象 mv.addObject("message", "Hello World!"); //设定该方法返回的视图 mv.setViewName("/WEB-INF/View/welcome.jsp"); logger.info(DEBUG_TAG + " 返回JSP: /WEB-INF/View/welcome.jsp"); return mv; } }
View页面
在控制器中设定返回的视图,在指定的路径就需要有相应的页面
这里就用一个简单的jsp页面来显示hello控制器中model包含的message对象
/WEB-INF/View/welcom.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*" pageEncoding="UTF-8"%> <!-- 注意将字符集改成UTF-8,建议在项目设置中将其设定为UTF-8 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>welcome</title> </head> <body> <!-- 通过EL表达式取出message并显示到页面上 --> ${resquestScope.message}<br> </body> </html>
Spring MVC配置文件
Spring MVC配置文件需要添加很多内容,但是基本上一次添加,后面都可以复制粘贴去进行修改
只是要注意命名空间和架构地址要写对,否则不能通过编译
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <!-- 将包中所有被注解的方法或类进行扫描并注册为相应的组件 --> <context:component-scan base-package="com.wzh.controller" /> <!-- 添加该配置会自动注册RequestMappingHanderMapping与RequestMappingHandlerAdapter --> <mvc:annotation-driven /> <!-- 添加该配置表示使用默认的Servlet来响应静态文件,用于解决引入静态文件被DispatcherServlet当作请求路径 --> <!-- 如引入一些js库,css文件的时候,导致页面返回404 --> <mvc:default-servlet-handler /> <!-- 设置固定的返回前缀或后缀,这里把后缀统一设定为.jsp --> <!-- 这样在返回视图名称的时候,就不需要每次都加.jsp --> <!-- 前缀的property name是prefix,可以自行添加测试 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
到这里,一个简单的Hello World项目基本建成,剩下的工作就是需要将它部署到Tomcat中然后打开浏览器来进行访问
完成部署之后运行服务器,然后打开浏览器并输入http://localhost:8080/[你的项目名称]/hello就能

最后总结一下:
一个基本的spring mvc除了有控制器,模型和视图之外,还需要在web.xml和springmvc-confgi.xml中做好相应的配置
做好配置之后,还需要在web.xml中引入springmvc-config的设置
在controller中,也可以在给类添加RequestMapping注解,让controller不直接映射到URL的根[本例的URL根就是localhost:8080/SpringMVCTest]
DispatcherServlet中有很多配置的细节,由于有一个默认的配置文件,因此不需要每一项都进行配置,只需要在需要自定义配装时,在springmvc-config.xml进行配置即可.
总的来说,DispatcherServlet负责拦截用户请求和处理请求,Controller负责后台逻辑等业务控制
下一节将学习使用Spring MVC的常用注解

浙公网安备 33010602011771号