SpringMVC(二)项目搭建

272 阅读1分钟

搭建入门工程

添加依赖

MVC依赖,jstl依赖,servlet-api依赖

  <dependencies>
	<!-- spring MVC依赖包 -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>5.0.7.RELEASE</version>
	</dependency>

	<!-- jstl -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jstl</artifactId>
		<version>1.2</version>
	</dependency>

	<!-- servlet -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>servlet-api</artifactId>
		<version>2.5</version>
		<scope>provided</scope>
	</dependency>

</dependencies>
    <build>
	<plugins>
		<!-- 配置Maven的JDK编译级别 -->
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>3.2</version>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
				<encoding>UTF-8</encoding>
			</configuration>
		</plugin>

		<plugin>
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat7-maven-plugin</artifactId>
			<version>2.2</version>
			<configuration>
				<path>/</path>
				<port>80</port>
			</configuration>
		</plugin>
	</plugins>
</build>

开发步骤

配置部分

web.xml

在web.xml中添加前端控制器DispatcherServlet的配置

<!-- 配置前端控制器 -->
<servlet>
	<servlet-name>springmvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<!-- 设置spring配置文件路径 -->
	<!-- 如果不设置初始化参数,那么DispatcherServlet会读取默认路径下的配置文件 -->
	<!-- 默认配置文件路径:/WEB-INF/springmvc-servlet.xml -->
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:springmvc.xml</param-value>
	</init-param>
	<!-- 指定初始化时机,设置为2,表示Tomcat启动时,DispatcherServlet会跟随着初始化 -->
	<!-- 如果不指定初始化时机,DispatcherServlet就会在第一次被请求的时候,才会初始化,而且只会被初始化一次 -->
	<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>springmvc</servlet-name>
	<!-- URL-PATTERN的设置 -->
	<!-- 不要配置为/*,否则报错 -->
	<!-- 通俗解释:/*,会拦截整个项目中的资源访问,包含JSP和静态资源的访问,对于静态资源的访问springMVC提供了默认的Handler处理器 -->
	<!-- 但是对于JSP来讲,springmvc没有提供默认的处理器,我们也没有手动编写对于的处理器,此时按照springmvc的处理流程分析得知,它短路了 -->
	<url-pattern>/</url-pattern>
</servlet-mapping>
springmvc.xml

DispatcherServlet启动时会去加载springmvc.xml文件

<!-- 扫描controller注解,多个包中间使用半角逗号分隔 -->
<context:component-scan base-package="com.xxx.xxx.controller"/>

<!-- 配置三大组件之处理器适配器和处理器映射器 -->
<!-- 内置了RequestMappingHandlerMapping和RequestMappingHandlerAdapter等组件注册-->
<mvc:annotation-driven />   

<!-- 配置三大组件之视图解析器 -->
<!-- InternalResourceViewResolver:默认支持JSP视图解析-->
<!-- 完整路径:   /WEB-INF/jsp/xxx.jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/jsp/" />
	<property name="suffix" value=".jsp" />
</bean>

编码部分

Cotroller
处理器开发方式有多种
- 实现HttpRequestHandler接口
- 实现Controller接口
- 使用注解方式

一般我们常用注解方式

示例

 @Controller
 public class HelloController {
/**
 * 展示页面
 * @return
 */
@RequestMapping("showView")
public String showView() {
	return "hello";
}

/**
 * 返回值上加上ResponseBody注解,表示返回的是一个数据
 * @return
 */
@RequestMapping("showData")
@ResponseBody
public String showData() {
	return "showData";
  }
}

注意事项:@Controller注解的类中每个@RequestMapping注解的方法,最终都会转为HandlerMethod类(而这个类才是SpringMVC注解开发方式中真正意义的处理器)