创建第一个spirngmvc小项目
题外:
设置目录为源代码目录
1.进入:file->project structure->modules->soures
进入这个里面,选择相应的文件夹。例如src/java里的java.选择之后再点击蓝色的soures,java目录就设置为了source Folders(源文件)。返回,会看到原本灰色的java目录变为蓝色。
<?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>servletDemo1</servlet-name>
<!--一定是package + .类名-->
<servlet-class>day08_servlet.ServletDemo1</servlet-class>
</servlet>
<!--给Servlet提供(映射)一个可供客户端访问的URI-->
<servlet-mapping>
<!--和servlet中的name必须相同-->
<servlet-name>servletDemo1</servlet-name>
<!-- servlet的映射路径 -->
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
</web-app>
创建第一个spirngmvc小项目:
1.创建maven项目,选择maven type web骨架,groudId,项目名,点击完成。等待。。。
出现相应的目录。
2.点击run,设置server : 服务器tomcat基本配置,设置deployment : 部署项目war包。下一节再记录application context设置与不设置的区别。最后测试:页面有hello world!
3.再main目录下创建java目录,设置其为源代码目录。
4.创建环境:引入依赖:spring的核心jar包(4个),还有一个jcl。再引入spring里web相关的jar包:spring-web,spring-webmvc
5.再java目录下创建一个com.abc.handler包,再该包下创建SomeHandler类。让该类实现controller(org.spingframework.web.servlet.mvc下的接口) ===== public class SomeHandler implements Controller{...
6.实现该接口的方法后,发现javax.servlet.http类没有,所以要导入依赖。这个类是tomcat里的类,所以导入tomcat依赖即可。在maven里搜索Tomcat Catalina,选择9.0+的版本。导入该依赖。
7.再WEB-INF目录下创建一个jsp目录,再jsp目录下创建一个welcome.jsp.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
欢迎你使用springmvc
</body>
</html> 再写index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %
<html>
<body>
<h2>Hello World!</h2>
<%--href="some"时是到发布的项目目录下找:访问网址是http://localhost/springmvc/some
href="/some"是直接到服务器下找:访问网址是http://localhost/some--%>
<a href="some">请求</a> </body>
</html>
8.再web.xml配置中servlet,
(首先把web.xml约束版本改为tomcat对应的版本:
本地tomcat文件夹->webapps->examples->。。这个好像不用改了)
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>springmvc</servlet-name>
<!--写的那个servlet-->
<servlet-class></servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--servlet的映射路径 :是jsp通过这个路径请求后,再通过springmvc找servlet-class是谁-->
<url-pattern>/some</url-pattern>
</servlet-mapping>
</web-app>
发现<servlet-class></servlet-class>标签内没有合适的servlet可以填。
实际上再springMVC中提供了中央调度器,提供了servlet
9.在<servlet-class></servlet-class>标签内鼠标右键点击,再按ctrl+shift+t,可以边写类名,边显示继承关系。打出DispatcherServlet,它是springMVC提供的一个servlet,所有的请求都先经过它。
10.<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>把所有想到处理器的请求都先交给中央调度器:DispatcherServlet。然后中央调度器再分给请求相应的处理器。
11.怎么分配:
a:配置springmvc.xml文件(和spring配置文件一样)
b:在配置文件里注册处理器:<bean id="/some" class="com.abc.handler.SomeHandler"/>
意思是如果有/some的请求的时候,就去找com.abc.handler.SomeHandler,SomeHandler实体类。
(1).但是在这个之前DispatcherServlet首先要能够找到springmvc.xml.如果没有在web.xml配置 <init-param>标签如下,DispatcherServlet会默认在webapp目录下找名叫springmvc-servlet.xml,
当然你也可以把springmvc.xml改名为springmvc-servlet.xml,然后放到WEB-INF目录下,也是能够成功的。如下图:

(2).如果在web.xml配置 <init-param>标签,即我不想把springmvc.xml改名为springmvc-servlet.xml,想把springmvc.xml放在java代码那边。
首先我把这个文件放在java目录下,然后 <param-value>classpath:springmvc.xml</param-value>里找不到springmvc.xml.
因为springmvc.xml此时必须放在类路经下才能找到,

<!--中央调度器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<!--写的那个servlet-->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
但是java目录不是类路径,classes才是类路经。
classes文件经过编译才能出现,怎么让springmvc.xml 成为类路径有两种方法:
1.在pom.xml配置,
2.在main目录下创建一个resources目录,把springmvc.xml放在resouces目录下,然后将resoures目录设置为资源文件

这是以后常见的目录结构:

c:实现需求:用一个<url-pattern></url-pattern>传递多个页面请求到DispatcherServlet里,再到handler。
如果写”/“会把所有的静态请求都交给中央调度器,所以如果ggg.html也会给handler,会发生找不到404的错误,不建议使用
如果写”/*“的话,会把所有的请求都交给中央调度器,包括动态index.jsp,所以不能使用
用*.do或者*.go可以解决这个需求:
1.让提交请求的路径后面加上.do 例如:<a href="some.do">
2.在注册的时候也写上"/请求路径.do"
3.<url-pattern>*.do</url-pattern>
即所有后缀为.do的请求都可以被中央调度器接收了,不加就不用接收了
创建第一个spirngmvc小项目的更多相关文章
- spring boot学习01【搭建环境、创建第一个spring boot项目】
1.给eclipse安装spring boot插件 Eclipse中安装Spring工具套件(STS): Help -> Eclipse Marketplace... 在Search标签或者Po ...
- Extjs6(一)——用sencha cmd建立一个ExtJs小项目
本文基于ext-6.0.0 一.用sencha cmd建立一个ExtJs小项目 首先,需要一个命令行工具.进入extjs所在目录. 然后,输入:sencha -sdk [ExtJs6.0文件夹地址] ...
- 又见angular----步一步做一个angular4小项目
这两天看了看angular4的文档,发现他和angular1.X的差别真的是太大了,官方给出的那个管理英雄的Demo是一个非常好的入门项目,这里给出一个管理个人计划的小项目,从头至尾一步一步讲解如何去 ...
- NodeJS笔记(三)-创建第一个NodeJS web项目 Express
参考:Express的安装 先创建一个文件夹专门存放NodeJS项目,这里以“E:\NodeJSProject”为例 CMD指向该目录 执行以下命名 mkdir expressdemo cd expr ...
- Eclipse创建第一个Spring Boot项目
一.安装SpringBoot插件 安装过程需要联网下载插件,属于在线安装,请耐心等待安装完成,下载安装完成以后,需要重启Eclipse 二.创建Spring Boot项目 如下图所示new-other ...
- idea创建第一个maven web项目
一.打开idea,File->New->Project.选择Mavne,勾选Create from archtype,选择org.apache.maven.archtypes:maven- ...
- 使用模板创建第一个Web API项目
软件环境 vs 2015 update3 本节将通过例子讲述创建Web API 项目的方法 第一步,打开vs ,依次通过[文件]菜单,[新建][项目]命令,大致步骤如下图 : 第2步,在弹出对话框 ...
- Windows10安装node.js,vue.js以及创建第一个vue.js项目
[工具官网] Node.js : http://nodejs.cn/ 淘宝NPM: https://npm.taobao.org/ 一.安装环境 1.本机系统:Windows 10 Pro(64位)2 ...
- ASP.NET Core系列(二):创建第一个.Net Core 项目
前面讲过 .NET Core简介及开发环境安装,本章会讲一讲ASP.NET Core 2.0的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zh ...
随机推荐
- DOM学习总结(二)
一.什么是DOM属性 DOM属性简单来说就是HTML的属性值 二.常见的DOM属性有哪些? 1.innerHTML 属性 获取元素的内容,想要拿到某个元素的文本内容,直接在后面加 .innerHTML ...
- JS 变量 相关内容
JS变量按存储方式区分为哪些类型?: js变量按照存储方式分为两种类型:值类型 和 引用类型 1.值类型(基本类型): 布尔值(boolean) . null .undefined .数值(numbe ...
- AMS算法
#include<stdio.h> #include<stdlib.h> #include<time.h> #define N 1000//采样点的个数 #defi ...
- 转-C++之手写strcpy
转自:strcpy函数的实现 知strcpy函数的原型是: char *strcpy(char *dst, const char *src); 实现strcpy函数 解释为什么要返回char * 假如 ...
- 4、APP FPS测试
什么是FPS FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数.FPS是测量用于保存.显示动态视频的信息数量.每秒钟帧数愈多,所显示的动作就会愈流畅.通常,要避免动作不 ...
- Haskell语法
http://www.ibm.com/developerworks/cn/java/j-cb07186.html 1. 构造符号 : 比如: 1:2:3:[] 而常用的 [1,2,3] 是一种语法糖( ...
- 注解@Override
Android的开发者对@Override肯定是非常熟悉,不管是自己的代码中还是书上都会出现,但是他是什么意思呢?如下: @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: ...
- 常用内置模块(二)——logging模块
logging模块 一.logging作用 1. 控制日志级别 2. 控制日志格式 3. 控制输出的目标为文件 二.日志级别 logging.debug( logging.info( loggin ...
- Redis数据结构之跳跃表-skiplist
在Redis中,zset是一个复合结构: 使用hash来存储value和score的映射关系 使用跳跃表来提供按照score进行排序的功能,同时可以指定score范围来获取value列表 结构 zse ...
- 第十篇 scrapy item loader机制
在我们执行scrapy爬取字段中,会有大量的和下面的代码,当要爬取的网站多了,要维护起来很麻烦,为解决这类问题,我们可以根据scrapy提供的loader机制 def parse_detail(sel ...