springmvc使用注解创建一个简单的web应用
一、准备
- 创建一个普通maven项目,添加web框架支持。
- 添加依赖
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.8.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies>
二、配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>SpringMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
注意:在url-pattern标签中配置 ' / ' 和 ' /* ' 是有区别的:
- ' / '配置斜杠,匹配所有请求,不会匹配jsp页面。
- ' /* '配置斜杠加星,匹配所有请求,包括jsp页面。
三、配置springmvc的主配置文件,也就是spring的主配置文件
<?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:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<context:component-scan base-package="com.lifue.controller"/>
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
</beans>
- mvc:annotation-driven:配置注释驱动的Spring MVC Controller编程模型。请注意,此标记仅在Web MVC中有效,而在Portlet MVC中无效!context:annotation-config这个标签配置注释驱动spring的注解。
- mvc:default-servlet-handler:配置这个注解可以使springmvc可以使用默认的handler(处理器)--包括处理器映射器、处理器设配器。
- context:component-scan:这个注解告诉spring容器去哪里找组件。
- InternalResourceViewResolver:视图解析器必须要自己配置,需要注入两个属性,分别是prefix和suffix。当controller返回一个视图时,springmvc会交给视图解析器分析该地址。配置一个资源的完整路径。然后再将其返回给DispatcherServlet,然后DispatcherServlet在找到视图返回给用户。
四、编写Controller类
package com.lifue.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class AnnotationController {
@RequestMapping("main")
public String mainPage(Model model){
String result = "Hello SpringMvc Annotation!";
model.addAttribute("msg", result);
return "main";
}
}
@RequestMapping括号内的是这个Controller的地址,相当于id。model用来存储service返回来的数据。return返回的是一个视图的地址,从controller返回到DispatcherServlet,然后DispatcherServlet会将这个字符串送到视图解析器经过解析器后,这个字符串就变成了/WEB-INF/jsp/main.jsp。当然在这个路径下存在这么个文件。DispatcherServlet根据这个路径找到视图并返回给客户端。

浙公网安备 33010602011771号