【spring】第二个springmvc helloworld 以及 spring模糊路径

第二个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"})
发布了128 篇原创文章 · 获赞 37 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/tyrant_forever/article/details/103326108
今日推荐