注解实现简单的开发
1、maven导包
spring-webmvc就是spring全部核心包
jstl是一个JSP标签集合,它封装了JSP应用的通用核心功能。
在我们使用Maven构建项目的时候,会默认过滤掉静态资源,导致有些资源文件读取不到,排查很久发现自己的路径什么的都正确,这个时候就要考虑手动来配置maven,放开这个过滤,pom.xml下添加:<resource>那一段
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
2、添加web的支持
3、idea中添加web支持后会自动生成web目录和web.xml,接下来就要配置web.xml
死代码就是注册了一个DispathcherServlet,然后配置了一个启动级别load-on-startup数值越小优先级越高,再就是一个映射让它处理匹配所有的 / 请求
自己学习可以保存重复使用,真实工作中基本上不会动这些东西
<?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>
<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>
4、死代码创建sprigmvc-servlet.xml关于servlet和springmvc的配置
配置了自动扫描注解
过滤一些静态资源让它不去经过视图解析器去处理例如:.mp3 .mp4 .avi.等静态资源
自动注入处理器映射器和处理适配器,这一句注解代替了下面两段注入
<!--自动注入处理映射器和处理适配器-->
<mvc:annotation-driven/>
添加 处理映射器
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
添加 处理器适配器
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<?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:contex="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 https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--自动扫描包让注解生效-->
<contex:component-scan base-package="com.okyang.controller"/>
<!--过滤静态资源-->
<mvc:default-servlet-handler/>
<!--自动注入处理映射器和处理适配器-->
<mvc:annotation-driven/>
<!--视图解析器-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
5、创建jsp文件夹及jsp页面
${msg}是为了接受controller传来的数据
6、创建controller文件夹及Hellocontroller(注释内容很清晰)
package com.okyang.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
//自动注入到spring中
@Controller
//可写可不写 如果写了那么调用时候就是http://localhost:8080/hello/h1
// 如果不写就是http:localhost:8080/h1 写了是为了有个子父类关系
@RequestMapping("/hello")
public class HelloController {
// servlet请求
@RequestMapping("/h1")
// 传入Model是代替了ModelAndView可以给前端页面传值
public String hello(Model model){
// 封装数据
model.addAttribute("msg", "hello,SpringMVC");
//跳转到hello.jsp 因为之前有配置前后缀只需要写hello即可匹配到/WEB-INF/jsp/hello.jsp
// <property name="prefix" value="/WEB-INF/jsp/"/>
// <property name="suffix" value=".jsp"/>
return "hello";//会被视图解析器处理
}
}
7、配置tomcat开始运行
然后apply
成功
地址栏的东西是controller里面配置好的![watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTAzMTgz,size_16,color_FFFFFF,t_70](https://i-blog.csdnimg.cn/blog_migrate/0d853cb3de61c94dd9fdf25fdbbe78c7.png)
页面的内容是通过Model传过来的