第二章Hello World-跟赵大笨笨学SpringMVC

一.新建一个动态web工程。

大笨用的myeclipse,eclipse其实是一样的。
右键->New—>Other->Web->Dynamic Web Project


二.导入jar

我们基于Spring mvc框架进行开发,需要依赖一下的spring jar包:

  • spring-aop-4.0.4.RELEASE.jar
  • spring-beans-4.0.4.RELEASE.jar
  • spring-context-4.0.4.RELEASE.jar
  • spring-core-4.0.4.RELEASE.jar
  • spring-expression-4.0.4.RELEASE.jar
  • spring-web-4.0.4.RELEASE.jar
  • commons-logging-1.1.1.jar(用来打印log)
    把上面的jar包copy进/WebContent/WEB-INF/lib下面就可以,没有lib文件的自己新建一个。

三.配置web.xml

web.xml是任何一个web工程的入口,我们当然也要先从这里入手。
SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet
既然SpringMVC是基于DispatcherServlet的,那么我们先来配置一下DispatcherServlet

  <!-- 前端控制器的配置 DispatchcerServlet-->
  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <!-- 配置Spring mvc下的配置文件的位置和名称 -->
     <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml -->
     <!-- <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value> 默认
     </init-param> -->

     <!-- load-on-startup:表示启动容器时初始化该Servlet; -->
     <load-on-startup>1</load-on-startup> 

  </servlet>

6行代码就这么简单,我们配置完DispatcherServlet是不是应该告诉它哪些请求交给Spring Web MVC处理?那再加4行来实现。

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

“/” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。
OK我们的web.xml就这么配置完了。我们看一下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0">
    <display-name>spring</display-name>

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

四.配置【servlet-name】-servlet.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"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      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
          http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <!-- 设置使用注解的类所在包 会自动扫描 我一会要把类写在这个包下-->
    <context:component-scan base-package="com.spring.action"></context:component-scan>

    <!-- 视图解析器  对转向页面的路径解析。prefix:前缀, suffix:后缀-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name = "prefix" value="/WEB-INF/views/"></property>
        <property name = "suffix" value = ".jsp"></property>
    </bean>
</beans>

五.controller

// 在类的前面添加Controller注解,表示是spring的控制器
@Controller
public class HelloWorld {
    // 请求url地址映射 @RequestMapping 是用于匹配请求的路径 
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("hello world");
        // 返回值会通过视图解析器解析为实际的物理视图, 对于InternalResourceViewResolver视图解析器,会做如下解析
        // 通过prefix+returnVal+suffix 这样的方式得到实际的物理视图,然后会转发操作
        // "/WEB-INF/views/success.jsp"
        return "success";
    }
}

@RequestMapping是用来映射请求的,什么get请求,post请求都可以。
这个@RequestMapping不仅可以加在方法上,也可以加在类型。注意要加在@Controller上面才好用。

六.新建jsp,启动Tomcat并访问

上面既然访问success.jsp,我们就去/WEB-INF/views/下面件success.jsp

<body>
hello  world
</body>

我们在eclipse中配置完tomcat将我们新建的工程添加进去,并且启动服务。因为 @RequestMapping(“/hello”),我们直接访问http://localhost:8080/spring/hello spring是我的工程名。
就会调用 hello()方法,并展示success.jsp
这里写图片描述


补充:
@RequestMapping可以实现模糊匹配路径,比如:

  ?:匹配一个字符

  *:匹配任意字符

  **:匹配多层路径
发一下我的工程
结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值