0,项目简介
完成第一个springmvc的helloworld程序、配置web.xml中springmvc的DispatcherServlet、最基本的jar包、springmvc.xml文件的配置、简单的视图解析器配置、简单的@RequestMapping映射方式。
1,新建一个Dynamic Web Project项目。项目名称springmvc-001helloworld。
2,加入springmvc的必要开发包,关于包的分析如下图。
3,配置web.xml文档中springmvc的springDispatcherServlet(关于配置这个的作用在以后的原理中详述)。
与配置普通Servlet是一样的,其中classpath:springmvc.xml配置的是springmvc的xml文件的位置(classpath表示在src目录下,后面还提供一种默认路径配置)。
小 技巧:使用alt+/的快捷方式,往后滚动,选择【#dispatcherservlet-Dispatcher declaration】可以快速生成下面的配置,然后自己修改。
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
4,配置springmvc的xml文档。
使用springIDE的【Spring Bean Configuration File】功能在src中生成springmvc.xml文件。
context:component-scan 是spring自动扫描包的。
InternalResourceViewResolver是springmvc的视图解析器(视图解析器以后的项目中详解)。
其中prefix属性表示目标方法返回后生成物理地址的前缀,suffix则表示后缀,后面在相应的类中还有详细解释。
小技巧:如果在使用context标签时,提示有错误,则需要将其命名空间导入。使用Spring Config Editor打开xml文件,切到Namespaces标签,将对应的勾选上即可。
<context:component-scan base-package="需要扫描的包名"></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>
5,在WEB-INF目录下创建一个index.jsp。
页面中的连接会提交到后面的java类的方法。
<%@ 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>Spring MVC Hello World</title>
</head>
<body>
<a href="hellWorldSpring">hello Spring MVC</a>
</body>
</html>
6,在WEB-INF下新建views文件再建success.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>Insert title here</title>
</head>
<body>
<h1>Success Page</h1>
</body>
</html>
7,创建一个HelloWorld的java类。
使用@RequestMapping的注解来映射浏览器的请求地址,即在index.jsp中的连接地址。
当点击该链接后,springmvc会找到该方法,通过返回的success字符串,然后通过之前配置的视图解析器,将其解析为 /WEB-INF/views/success.jsp(分别为前缀prefix-返回值-后缀suffix)物理地址。
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloWorld {
@RequestMapping("/hellWorldSpring")
public String hellWorldSpring(){
System.out.println("hello Spring MVC");
return "success";
}
}
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">8,</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">关于在web.xml中配置springmvc.xml文件的位置问题。</span>
8,springmvc默认位置配置方法。
除了之前使用的显示的方式配置之外,还可以采用默认的方式配置需要将显示的<init-param>配置删除。
默认的配置方式的springmvc的配置文件必须放到WEB-INF的目录下,
而且springmvc的配置文件名称必须按<servlet-name>-servlet的命名规则来命名。
本项目中<servlet-name>springDispatcherServlet</servlet-name>叫springDispatcherServlet,所以默认配置文件名应该叫springDispatcherServlet-servlet.xml。