当前位置: 首页 > 编程日记 > 正文

【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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttps://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttps://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/utilhttp://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"})

相关文章:

jquery倒计时插件可自定义多个倒计时间

jquery倒计时插件设置多个自定义倒计时时间&#xff0c;任意设置天、小时、分钟、秒倒计时间功能。 查看演示>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">…

怎样用cocos2d-x做一个基于地图块的游戏(Part One)

怎样用cocos2d-X做一个基于地图块的游戏 &#xff08;Part One&#xff09; 在这个分为上下两部分的教程中&#xff0c;我们将介绍如何使用Cocos2D-X和地图编辑器做一款基于地图块的游戏。在这个简单的地图块游戏里&#xff0c;一个精灵将在沙漠里搜寻它可口的西瓜&#xff01;…

【Code Complete】《Code Complete 》

良好编程实践的百科全书&#xff0c;完善编码聚焦于个人技能——所有的内容都来说明我们称之为“编写巧妙的代码”&#xff08;write clean code&#xff0c;clean可以翻译多种意思&#xff0c;只能意会了&#xff0c;有些英语翻译成汉语会很痛苦的&#xff09;。这本书就是那种…

redux示例

? 献上大概只有自己看得懂的学习笔记 结合使用实例理解更容易哦&#xff5e;import React from react; import ReactDom from react-dom; import {createStore} from redux; //解构一个createStore 创建状态对象//默认状态 state const defaultState{arr:[qq,bmw7], };//创建r…

18常用web开发 浮动层、提示层代码下载

1、jQuery顶部固定层页面滚动淡出淡进菜单显示 查看演示>> 2、jQuery鼠标滚动条到页面底部浮动层滑动弹出信息 查看演示>> 3、网页向导Jquery插件wlGuide功能操作步骤引导 查看演示>> 4、jQuery文字段落鼠标悬停图片突出显示和预览 查看演示>> 5、jque…

Android Handler的使用(二)

Handler的使用(二) 一、 Handler与线程的关系 Handler在默认情况下&#xff0c;实际上它和调用它的Activity是处于同一个线程的。 例如在Handler的使用&#xff08;一&#xff09;的示例1中&#xff0c;虽然声明了线程对象&#xff0c;但是在实际调用当中它并没有调用线…

【windows】cmd中的help无法使用的解决方法

今天使用黑框时遇到了一个问题&#xff0c;我在检查tomcat端口是否被占用时发现 黑框中竟然无法识别 netstat&#xff0c;随后试了一下help也无法识别。查了论坛后大名大佬给出的解决方案。 一、首先确定C:\WINDOWS\system32目录下有help.exe这个文件。 二、依次打开右键单击…

对微软Web Deploy的一次艰难调试

2011年初开始做一个项目&#xff0c;开始体验使用微软网站发布工具来发布网站。在服务器端安装发布服务后&#xff0c;可以在Visual Studio界面中右键点击Web项目&#xff0c;再点发布&#xff0c;第一次填好发布设置&#xff0c;以后就可以实现一键发布&#xff0c;虽然还有不…

vue总结 08状态管理vuex

状态管理 类 Flux 状态管理的官方实现 由于状态零散地分布在许多组件和组件之间的交互中&#xff0c;大型应用复杂度也经常逐渐增长。为了解决这个问题&#xff0c;Vue 提供 vuex&#xff1a;我们有受到 Elm 启发的状态管理库。vuex 甚至集成到 vue-devtools&#xff0c;无需配…

java8 lambda 表达式详解

lambada 表达式实质上是一个匿名方法&#xff0c;但该方法并非独立执行&#xff0c;而是用于实现由函数式接口定义的唯一抽象方法使用 lambda 表达式时&#xff0c;会创建实现了函数式接口的一个匿名类实例可以将 lambda 表达式视为一个对象&#xff0c;可以将其作为参数传递1.…

【基础知识】win10常用快捷键

1、winctrlD 创建虚拟桌面 2、winctrl左右箭头 切换桌面 winctrlF4 关闭当前虚拟桌面 (按wintab 可以通过鼠标操作虚拟桌面的创建、切换与删除) 3、winM 全部窗口最小化 (winD 可在最小化全部窗口与恢复全部窗口状态 间自由切换 4、win数字 打开任务栏中从左到右的应用&#xf…

ASP.NET2.0-防止同一用户同时登陆

要防止同一用户同时登陆,首页应该记录在线用户的信息(这里与用户名为例),然后判断正在登陆的用户里面是否已存在。在这里使用一个cache存放已经登陆的用户名&#xff0c;但是还有一个问题就是要知道用户是什么时候离开系统的呢&#xff1f;这就要定期清除cache中的内容了&#…

如何选择真正的万兆防火墙?

http://www.cnw.com.cn/security-10g-firewall/htm2011/20110526_225444.shtml 随着“三网合一”、 “P2P视频”、“高清宽带”、“云时代”等逐渐成为人们关注的焦点&#xff0c;网络带宽的需求产生了几何级别的增长。目前&#xff0c;“千兆到桌面、万兆做骨干”对于交换机和…

Salesforce Lightning开发学习(二)Component组件开发实践

lightning的组件区分标准组件、自定义组件和AppExchange组件。标准组件由SF提供&#xff0c;自定义组件由developer自行开发&#xff0c;AppExchange组件由合作伙伴建立。下面我们写一个简单的列表demo来学习下自定义开发组件Component。 第一步&#xff1a;新建一个对象&#…

转 java c++互传arraylist

Java JNI由浅入深(包括&#xff1a;Java和C互传ArrayList泛型对象参数) 2010-11-25 09:57 1694人阅读 评论(1) 收藏 举报我们知道Java是一个运行在虚拟机里面的高级的编程语言&#xff0c;如果要调用系统的动态链接库的话&#xff0c;就要先声明native修饰的方法(类似接口里面的…

GoAccess安装及分析nginx实时日志

GoAccess是一个基于终端的快速日志分析器。其核心思想是实时快速分析和查看Web服务器统计信息&#xff0c;而无需使用您的浏览器&#xff08;如果您希望通过SSH快速分析访问日志&#xff0c;或者只是喜欢在终端中工作&#xff09;&#xff0c;终端输出是默认输出&#xff0c;但…

在写游戏时钟类时,应确保时钟的计算是以某个固定的CPU为标准的

在写游戏时钟类时&#xff0c;应确保时钟的计算是以某个固定的CPU为标准的。下面通过一个例子来阐述如何实现这一思想&#xff1a; // 记录特定进程的affinity maskunsigned long lProcessAffinityMask;// 记录系统的affinity maskunsigned long lSystemAffinityMask;::GetProc…

学习Spring Boot

Spring boot 是什么 ? 简单说, spring boot 是一个构建项目的工具, 一个脚手架. Spring boot 能干什么? spring boot 做非常少的配置就可以构建生产级别的单体应用. Spring boot 怎么干的? 下面让我们来用spring boot 做一个hello world. 环境准备, 需要保证你的机器上已经有…

Linux添加用户组和添加用户

1.用户组 添加组&#xff1a;groupadd 组名 [rootServer-n93yom ~]# groupadd dev [rootServer-n93yom ~]# cat /etc/group | grep dev dev:x:10011: [rootServer-n93yom ~]# 删除组&#xff1a;groupdel 组名 [rootServer-n93yom ~]# groupdel dev [rootServer-n93yom ~]# cat…

用javascript实现仿163的js广告向下挤压页面的效果

本次实现一个js小小特效&#xff0c;效果就是广告从页面的上方出来将基本页面挤压下去。 实现的思路是将两个div&#xff08;广告div1和div2&#xff09;。将div1的高度不断增加&#xff0c;增加的同时div2的y轴坐标变大&#xff0c;div1的高度增加多少相对应的y轴坐标加大多少…

【eclipse】快速调整eclipse背景和格式的方法

第一步 第二步 第三步 &#xff1a;选择相应的格式 效果如图

对做C#自定义控件的一点心得

近期在做DSOFramer这个控件&#xff0c;打算自己弄一个自定义控件来封装这个COM组件&#xff0c;中间遇到很多曲折&#xff0c;研究了一个星期&#xff0c;终于完成了 下面总结一下我做DSOFramer这个自定义控件的注意地方&#xff1a; 1、在创建一个Windows窗体控件库的时候&am…

numpy知识点

1、nonzero 对于一维数据来说&#xff0c;将返回符合条件的 下标 >>> b1 np.array([True, False, True, False]) >>> np.nonzero(b1)(array([0, 2]),)对于二维数据来说&#xff0c;将返回两维 元组&#xff0c; 第一维是符合条件的 x的索引&#xff0c;第二…

Excel导入异常Cannot get a text value from a numeric cell解决

POI操作Excel时偶尔会出现Cannot get a text value from a numeric cell的异常错误。 异常原因&#xff1a;Excel数据Cell有不同的类型&#xff0c;当我们试图从一个数字类型的Cell读取出一个字符串并写入数据库时&#xff0c;就会出现Cannot get a text value from a numeric …

【蓝桥java】递归基础之反向输出字符串

题目&#xff1a;输入一个字符串&#xff0c;要求将该字符串反向输出 代码实现&#xff1a; package xn.zzunit.recurrence;/*** 递归方法反向输出字符串* author tyrantForever**/ public class Project1 {public static void main(String[] args) {String testString "…

SQL Server中灾难时备份结尾日志(Tail of log)的两种方法

简介 在数据库数据文件因各种原因发生损坏时&#xff0c;如果日志文件没有损坏。可以通过备份结尾日志&#xff08;Tail of log)使得数据库可以恢复到灾难发生时的状态。 例如: 上图中。在DB_1中做了完整备份&#xff0c;在Log_1,Log_2处做了日志备份。在Log_2备份之后不久&…

C examples

最近在看David R. Hanson 的《C Interfaces and Implementations》&#xff0c;文中第一章提到了Literate Programming 作者举了一个例子&#xff1a; 功能&#xff1a;用于检测输入中相邻且相同的单词 #include<stdio.h> #include<math.h> #include<errno.h&g…

特征工程:特征生成,特征选择(三)

转自&#xff1a;https://blog.csdn.net/cymy001/article/details/79169862 特征生成 特征工程中引入的新特征&#xff0c;需要验证它确实能提高预测得准确度&#xff0c;而不是加入一个无用的特征增加算法运算的复杂度。 1. 时间戳处理 时间戳属性通常需要分离成多个维度比如年…

JAVA设计模式之不变模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述不变&#xff08;Immutable&#xff09;模式的&#xff1a; 一个对象的状态在对象被创建之后就不再变化&#xff0c;这就是所谓的不变模式。 不变模式的结构 不变模式可增强对象的强壮型(robustness)。不变模式允许多个对象共享…