springmvc基础知识(1):搭建springmvc项目之HelloWorld

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/abc997995674/article/details/80353410

添加依赖

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

添加这一个依赖就可以自动引入其他所有的spring运行环境相关jar和springmvc运行相关jar:
这里写图片描述

在web.xml中配置核心控制器

<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:springmvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

配置解析:

  • dispatcherServlet:前端控制器,主要负责请求的分派。前端的请求由这里分派给指定的处理器。
  • load-on-startup:当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。正数的值越小,启动该servlet的优先级越高。
  • url-pattern:表示拦截哪些请求, “/” 表示拦截所有请求。也可以如”.do”表示拦截所有以do为扩展名的请求。基本使用是”.do”,在使用rest时用”/”
  • dispatcherServlet默认使用WebApplicationContext作为上下文。配置初始化参数contextConfigLocation,可以指定springmvc初始化上下文使用的配置文件。也可以不配置,默认会加载
    “/WEB-INF/[servlet名字]-servlet.xm”

上面的配置会在web容器(tomcat)启动的时候启动springmvc容器(WebApplicationContext)


配置springmvc配置文件

1 . 先配置包扫描:

<!-- 扫描@Controller创建bean -->
<context:component-scan base-package="com.springmvc"
    use-default-filters="false">
    <context:include-filter type="annotation"
        expression="org.springframework.stereotype.Controller" />
</context:component-scan>

spring容器是springmvc容器的父容器,父容器可以看到子容器的Bean,子容器中不能看到父容器中的Bean。如果两个容器都配置了包扫描,会有同一个bean被创建两次的情况。最常用的解决方案就是在配置包扫描是进行过滤:
在springmvc配置文件中配置只扫描@Controller注解,spring容器配置排除扫描@Controller注解。

2 . 配置页面解析器:

<!-- 配置页面解析器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>
  • 最常用的URL文件应该就是我们的jsp页面了,InternalResourceViewResolver解析器可以解析该资源。其主要职责是:根据处理器的返回值找到资源页面,然后装配页面数据,最后返回给前台。
  • prefix和suffix属性可以指定资源页面的前缀和后缀,可以直接把资源位置定位到项目的/WEB-INF/views下面。

InternalResourceViewResolver默认是使用了InternalResourceView作为视图的实现类,如果你想使用JSTL标签的一些功能的话,那就需要用JstlView来替换InternalResourceView了,具体的配置如下:

<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"></property>
    <property name="suffix" value=".jsp"></property>
    <property name="viewClass" value = "org.springframework.web.servlet.view.JstlView"></property>
</bean>

如果处理器返回值为”success”,则前端控制器会去配置中找viewResolver,根据配置定位页面为:/WEB-INF/views/success.jsp,定位到文件后,装配数据,然后将之返回给前端。

3 . 创建处理器

package com.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/helloWorld")
public class HelloWorldController {

    @RequestMapping("/sayHello.do")
    public String sayHello(){
        System.out.println("helloWorld...");
        return "success";
    }
}
  • 首先用@Controller注册bean,将之交给springmvc容器管理。
  • 然后配置@RequestMapping处理请求地址映射。
  • 关于@RequestMapping: @RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
    @RequestMapping 除了修饰方法, 还可来修饰类 : 类定义处: 提供初步的请求映射信息。相对于 WEB
    应用的根目录; 方法处: 提供进一步的细分映射信息。 相对于类定义处的 URL。 若类定义处未标注
    @RequestMapping,则方法处标记的URL相对于 WEB 应用的根目录

上面定义的处理器sayHello()可以处理下面的请求:
http://localhost:8080/springmvc-demo/helloWorld/sayHello.do
返回页面/WEB-INF/views/success.jsp

  • 测试
    index.jsp:
<a href="helloWorld/sayHello.do">HelloWorld!</a>

这里写图片描述
这里写图片描述

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页