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

来源:互联网 发布:access连接sql server 编辑:程序博客网 时间:2024/06/08 03:47

一.新建一个动态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的控制器@Controllerpublic 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可以实现模糊匹配路径,比如:

  ?:匹配一个字符

  *:匹配任意字符

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

原创粉丝点击