JavaWeb-14-SpringMVC的简介和Helloword

Table of Contents

一:springMVC简介

1:是Spring实现web模块的;简化web开发的

2:传统的MVC

3:springMVC下的MVC

 二:springMVC的HelloWorld

1:普通web模式下

1.1:选择spring模块

1.2:选择项目位置 

1.3:系统自动下载jar包 

1.4:加入jar包依赖

1.5:配置tomcat(也可以不配置,一会自己加)

1.6:修改web.XML

 1.7:springMVC的配置

1.8:写一个controller 

1.9:部署项目

2:使用maven工具

2.1:创建项目

2.2:添加依赖

2.3:添加框架支持

2.4:修改web.XML

 2.5:springMVC的配置

2.6:写一个controller 

2.7:部署项目

3:总结springmvc的HelloWord

1:导包:

2:写配置:

 1)web.xml可能要写什么

2):框架自身可能要写什么(springmvc的前端控制器的配置)

3: 测试

4:helloworld原理和细节

4.1:helloword流程

4.2:一个方法一个请求

5:RequestMapping属性详解

5.1:method:限定请求方式、

5.2:params:规定请求参数

5.3:规定请求头;也和params一样能写简单的表达式

5.4:consumes:只接受内容类型是哪种的请求,规定请求头中的Content-Type

5.5:produces:告诉浏览器返回的内容类型是什么,给响应头中加上Content-Type:text/html;charset=utf-8

6:@RequestMapping模糊匹配功能

7:@PathVariable 路径占位符


一:springMVC简介

1:是Spring实现web模块的;简化web开发的

 

SpringMVC==Spring的web模块;

2:传统的MVC

3:springMVC下的MVC

 二:springMVC的HelloWorld

1:普通web模式下

1.1:选择spring模块

1.2:选择项目位置 

1.3:系统自动下载jar包 

1.4:加入jar包依赖

1.5:配置tomcat(也可以不配置,一会自己加)

1.6:修改web.XML

 1.7:springMVC的配置

在dispatcher-servlet.xml配置spring mvc相关的。如:扫描的基包、页面访问位置及后缀。

如果你的取得名字是HelloMVC,那么与其对应的servlet名字必须是:HelloMVC-servlet.xml。格式是:自定义名称-servlet.xml

HelloMVC-servlet内容如下:

需要说明的是:先引入context及mvc之后,下面就可以联想出来了。

1.8:写一个controller 

1.9:部署项目

 启动:

注:如果有的报错:记得修复Artifacts(目的就是将lib下的jar包,加入web-info下)

2:使用maven工具

2.1:创建项目

2.2:添加依赖

我们打开其中的pom.xml,添加我们的依赖。这里我把我的依赖全部放出来,复制到你的pom.xml的dependencies标签之间就可以了,pom文件中也会给你一个示例。

我们今天做最简单的helloworld,只需要导入webmvc即可

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.6.RELEASE</version>
  </dependency>


</dependencies>

2.3:添加框架支持


配置完pom.xml之后,我们在idea中要添加一下框架的支持。右击我们的项目文件夹,选择add framework support

将下图中的Spring和Spring下的Spring MVC都勾上,之前配置pom.xml文件时,已经自动下载了spring相关文件,所以这里就直接用之前下载好的就可以了,OK。(注意:点了Add framework support之后,在下图中有可能会找不到Spring,解决办法在下图的下方
 

如果在Add framework support中找不到Spring,那是因为项目中可能已经存在Spring相关文件,但不一定是完善的。因此我们要将已经存在的Spring给删掉,重新添加,方法如下:

点击File,选择Project Structure,(快捷键ctrl+shift+alt+s)选择Facets,就会看到有一个Spring啦,右击它,点删除就行啦,然后再回到上面第3步重新Add framework support,Spring就会出现啦。

 可以看到新增了两个xml文件,并且我也调整了一下包结构

 

2.4:修改web.XML

 2.5:springMVC的配置

在dispatcher-servlet.xml配置spring mvc相关的。如:扫描的基包、页面访问位置及后缀。

如果你的取得名字是HelloMVC,那么与其对应的servlet名字必须是:HelloMVC-servlet.xml。格式是:自定义名称-servlet.xml

HelloMVC-servlet内容如下:

需要说明的是:先引入context及mvc之后,下面就可以联想出来了。

2.6:写一个controller 

2.7:部署项目

 启动:

3:总结springmvc的HelloWord

1:导包:

commons-logging-1.1.3.jar

spring-aop-4.0.0.RELEASE.jar

spring-beans-4.0.0.RELEASE.jar

spring-context-4.0.0.RELEASE.jar

spring-core-4.0.0.RELEASE.jar

spring-expression-4.0.0.RELEASE.jar

spring-web-4.0.0.RELEASE.jar

spring-webmvc-4.0.0.RELEASE.jar

2:写配置:

 

 1)web.xml可能要写什么

          配置springmvc的前端控制器,指定springmvc配置文件位置

<?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">
    
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>


     <!--contextConfigLocation:spring本身的框架配置-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>


    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--在dispatcher-servlet.xml配置spring mvc相关的。如:扫描的基包、页面访问位置及后缀。
            如果你的取得名字是HelloMVC,那么与其对应的servlet名字必须是:HelloMVC-servlet.xml。
            格式是:自定义名称-servlet.xml-->
        <!--<init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>-->

        <!-- servlet启动加载,servlet原本是第一次访问创建对象;
        load-on-startup:服务器启动的时候创建对象;值越小优先级越高,越先创建对象;
         -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <!--
            /*和/都是拦截所有请求; /:会拦截所有请求,但是不会拦截*.jsp;能保证jsp访问正常;
            /*的范围更大;还会拦截到*.jsp这些请求;一但拦截jsp页面就不能显示了;
          -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

去掉注释就是这样:

<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

2):框架自身可能要写什么(springmvc的前端控制器的配置)

在dispatcher-servlet.xml配置spring mvc相关的。如:扫描的基包、页面访问位置及后缀。

如果你在web.xml中取得名字是HelloMVC,那么与其对应的servlet名字必须是:HelloMVC-servlet.xml。 格式是:自定义名称-servlet.xml,这样就可以在web.xml中不必显示性的鞋配置文件的名字

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--扫描包-->
    <context:component-scan base-package="com.wkl"></context:component-scan>

    <!--指定视图解析器的前后缀-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"

          id="internalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/pages/"/>

        <property name="suffix" value=".jsp"/>

    </bean>

</beans>

 

3: 测试

@Controller
public class HelloController {

    @RequestMapping("/hello")
    public String hello(){
        System.out.println("请求了。。。。。");
        return "success";
    }
}

4:helloworld原理和细节

4.1:helloword流程

 

*      1)、客户端点击链接会发送 http://localhost:8080/hello 请求

 *      2)、来到tomcat服务器;

 *      3)、SpringMVC的前端控制器收到所有请求;

 *      4)、来看请求地址和@RequestMapping标注的哪个匹配,来找到到底使用那个类的哪个方法来处理

 *      5)、前端控制器找到了目标处理器类和目标方法,直接利用返回执行目标方法;

 *      6)、方法执行完成以后会有一个返回值;SpringMVC认为这个返回值就是要去的页面地址

 *      7)、拿到方法返回值以后;用视图解析器进行拼串得到完整的页面地址;

 *      8)、拿到页面地址,前端控制器帮我们转发到页面;

4.2:一个方法一个请求

 

 
 
 

5:RequestMapping属性详解

5.1:method:限定请求方式、

 

HTTP协议中的所有请求方式:

     *          【GET】, HEAD, 【POST】, PUT, PATCH, DELETE, OPTIONS, TRACE

 

      method=RequestMethod.POST:只接受这种类型的请求,默认是什么都可以;

5.2:params:规定请求参数

 

params 和 headers支持简单的表达式:           

     *     param1: 表示请求必须包含名为 param1 的请求参数

     *          eg:params={"username"}:

     *              发送请求的时候必须带上一个名为username的参数;没带都会404

     *

     *      !param1: 表示请求不能包含名为 param1 的请求参数

     *          eg:params={"!username"}

     *              发送请求的时候必须不携带上一个名为username的参数;带了都会404

     *      param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1

     *          eg:params={"username!=123"}

     *              发送请求的时候;携带的username值必须不是123(不带username或者username不是123)

     *

     *      {“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2 的两个请求参数,且 param1 参数的值必须为 value1

     *          eg:params={"username!=123","pwd","!age"}

     *              请求参数必须满足以上规则;

     *              请求的username不能是123,必须有pwd的值,不能有age

5.3:规定请求头;也和params一样能写简单的表达式

 

5.4:consumes:只接受内容类型是哪种的请求,规定请求头中的Content-Type

 

5.5:produces:告诉浏览器返回的内容类型是什么,给响应头中加上Content-Type:text/html;charset=utf-8

 

6:@RequestMapping模糊匹配功能

 

7:@PathVariable 路径占位符

//路径上可以有占位符:  占位符 语法就是可以在任意路径的地方写一个{变量名}
    //   /user/admin    /user/leifengyang
    // 路径上的占位符只能占一层路径
    @RequestMapping("/user/{id}")
    public String pathVariableTest(@PathVariable("id")String id){
        System.out.println("路径上的占位符的值"+id);
        return "success";
    }

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章