题外:

设置目录为源代码目录

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的请求都可以被中央调度器接收了,不加就不用接收了


 

最新文章

  1. Oracle数据加载之外部表的介绍
  2. [leetcode] 题型整理之cycle
  3. MyEclipse部署到tomcat的问题
  4. 使用用Generic.xaml加载默认的主题资源
  5. 建站阿里云、amh主机面版
  6. 收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation
  7. CalendarUtil
  8. struts2 Action 接收参数的三种方法
  9. win8 Pro 64位在 UEFI模式下Ghost系统 备份 恢复
  10. js Array 阵列扩展方法
  11. (转)java中对集合对象list的几种循环访问总结
  12. Java多线程——创建线程的两种方式
  13. Thinkpad USB 经典键盘使用体验
  14. 谣传QQ被黑客DDOS攻击,那么Python如何实现呢?
  15. apache配置伪静态Rewrite
  16. python re模块与正则表达式
  17. InnoDB 文件系统
  18. CentOS6.8安装配置sonarqube6.4
  19. matlab xml文件交互
  20. 1、CDH 搭建Hadoop在安装之前(存储空间规划)

热门文章

  1. 使用pangolin库画出轨迹
  2. C++语言编程基础
  3. Installing GCC 简单方法
  4. git分布式版本控制系统权威指南学习笔记(五):git checkout
  5. react-loadable路由懒加载
  6. Feign 系列(01)最简使用姿态
  7. Redis数据结构之快速列表-quicklist
  8. 47-Ubuntu-系统信息-2-df和du查看磁盘和目录空间占用
  9. vue swiper上下无缝轮播
  10. 从数据库更新模型报错:无法将运行时连接字符串转换为设计时等效项,没有为提供程序“mysql.data.mysqlclient”安装为设计目的启用visual studio以便与数据库进行通信所需要的库