第二个helloword
配置文件:
1、添加pom文件
(1)配置parent
代码实现:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
(2)添加依赖
代码实现:
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
(3)添加插件
代码实现:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2、添加(复制粘贴)WEB-INF以及web.xml
注:
(1)sprinpmvc是一个基于用户请求的mvc框架,原因见结构图
配置前端控制器:
代码实现:
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/applicationContext-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
注:
(1)前端控制器的作用:拦截所有的web请求
(2)url-pattern内的参数:
1)/*:拦截所有的请求,一般用于网站前台网站
2)/:拦截所有的web请求或者tomcat请求,一般用于开发普通工程,图片及静态资源不会拦截
3)*.action *.do:一般用于开发后台管理系统
配置应用上下文:
注:之前写过了在这里就不赘述了
代码实现:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
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/aop
https://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
https://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
">
<context:component-scan base-package="com.zzxtit.spring.mvc.action"></context:component-scan>
<!--
配置视图解析器
-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
编写类:
代码实现:
package com.zzxtit.spring.mvc.action;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/hello")
public class HelloWorldController {
@RequestMapping("sayHello")
public String sayHello() {
return "success";
}
}
注:
requestmapping注解:
(1)既可以在类名上添加也可以在方法名上添加
编写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>
<div align="center">
<h1>SUCCESS</h1>
</div>
</body>
</html>
发布到tomcat:
注:
(1)tomcat发布时能将对应的文件放到正确的位置的原因:
如所有的包都放到lib文件夹中,所有的java文件都放到class文件夹中
原因:
进入bulidpath,按照图示找到设置文件位置的区域
注:
(1)可以看到对应的文件都放到了对应的位置,如静态资源文件放到了class文件夹,依赖放到了lib文件夹
(2)假如说我们把关于依赖的发布删除掉,再发布一次我们可以看到,连lib文件夹都没有
注:
如果再需要添加回来
1)点击add
2)
3)
4)finish
(3)当我们的工程出现了问题,可以先检查发布的路径对不对,比如说我们编写了一个类,但在tomcat 下却没有发现这个类,这时我们先重新发布一下,如果还没有出现则是因为没有编译
需要手动勾选自动编译
注:一般情况不会出现,因为eclipse默认勾选自动编译
spring模糊路径
Requestmapping中的属性值
1、默认值value(当不写属性名称时,输入的属性值直接赋值给value)
注:
(1)其中有一行注释其含义为与path等价
(2)value是一个数组,当输入多个值时将多个访问路径指向handler
代码实现:
value= {"/sayHello", "/nihao"}
2、method :定义当前handler接受请求的方法
注:
(1)可用的方法不只有get和post还包括 put delete等(可以参考一下httpservlet的源码)
(2)method也是一个数组可以使用多种方法访问
代码实现:
method= {RequestMethod.POST}
(3)通过地址访问一定是get,不管传没传值,所以一般的访问方法无法访问到该handler,如果想使用post的方法访问需要使用表单方式。
(4)此时出现了一个新的错误405Method Not Allow
(5)当不设置值时任何请求都可以访问
请求路径的模糊匹配
1、?表示匹配任意一个字符
代码实现:
@RequestMapping(value= {"/sayH?llo", "/nihao"})
注:
(1)不可以是/或者\等在此处有一定意义(如分级等)的符号
(2)任意符号不包括0个字符
2、*表示任意字符
代码实现:
@RequestMapping(value= {"/sayH*lo", "/nihao"})
注:
(1)可以是0个字符
(2)但其中不能跨级(也就是其中不能含有/)
3、**表示任意层级任意字符
代码实现:
@RequestMapping(value= {"/sayH/**/llo", "/nihao"})