SpringMVC_001_框架搭建

来源:互联网 发布:网络咨询大病种的方法 编辑:程序博客网 时间:2024/06/10 13:04

1.加入JAR包(基本的8个JAR包)

spring-aop.jar

spring-beans.jar

spring-context.jar

spring-core.jar

srping-expression.jar

spring-web.jar

spring-webmvc.jar

commons.logging.jar用来做日志的包

2.配置web.xml

Eclipse先建一个Dynamic Web Project;

环境备注:Eclipse Luna,Tomcat8.0.36_x64,JDK1.8.0_91_X64;

spring为spring-4.3.4

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>springMVC001</display-name>    <!-- 配置DispatcherServlet -->  <servlet>    <servlet-name>springmvc</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <!-- 配置DispatcherServlet的初始化参数 -->    <init-param>      <param-name>contextConfigLocation</param-name>      <param-value>classpath:springmvc-servlet.xml</param-value>    </init-param>    <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>springmvc</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping>    <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>

DispatcherServlet中的init-param指定了springmvc对应的Servlet配置文件路径;当然可以省略这个初始化参数,SpringMVC默认的Servlet配置文件在WEB-INF下,Servlet配置文件的文件名为DispatcherServlet中的servlet-name;此实例去掉初始化参数后,SpringMVC配置文件为/WEB-INF/springmvc-servlet.xml;当有配置初始化参数,即使在对应路径下找不到配置文件也不会到WEB-INF下去找;具体是用默认的,还是自己指定位置看个人习惯。(我喜欢讲所有的配置文件放到src同级的resources目录中);

springmvc配置文件,此例子的配置文件为springmvc-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-4.3.xsd     http://www.springframework.org/schema/context     http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">    <!-- 配置自动扫描的包 -->  <context:component-scan base-package="com.ack"/>     <!-- 配置视图解析器:如何把Handler方法返回值解析为实际的物理视图 -->  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <property name="prefix" value="/WEB-INF/view/"/>    <property name="suffix" value=".jsp"/>  </bean></beans>

springmvc-servlet.xml中自动扫描com.ack下的包

HelloWorld.java

package com.ack.handler;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class HelloWorld {/** * 1.使用注解来映射请求的URL * 2.返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver视图解析器会做如下解析: * 通过prefix + returnValue + suffix匹配的路径文件来进行转发操作 * @return */@RequestMapping("firstDemo")public String hello(){System.out.println("Hello world");return "success";}}

index.jsp里加上一个链接:<a href="firstDemo">HelloWorld</a>;

由于com.ack/Handler的HelloWorld.java用@Controller告知springmvc,HelloWorld.java是一个请求处理器,处理请求时只会去Controller中找是否有对应方法。

类没加@Controller,处理请求时,警告: No mapping found for HTTP request with URI [/springMVC001/firstDemo] in DispatcherServlet with name 'springmvc';

@RequestMapping("helloWorld")指定访问HelloWorld.java的hello方法;
执行代码后跳转的路径为returnValue和springmvc-servlet.xml中InternalResourceViewResolver指定的prefix和suffix组合的路径;根据preffix+returnValue+suffix组合为:/WEB-INF/view/success.jsp

访问index.jsp的链接firstDemo跳转到/WEB-INF/success.jsp;

可以指定为freemarker、Velocity和其他的JAVA模板引擎;

这里根据preffix+returnValue+suffix指定跳转的路径没有问题,我担心的是@RequestMapping,这个请求是否唯一,如果有多个@RequestMapping的值相同又是怎么样;我将HelloWorld直接复制一份,更名为HelloSpringmvc.java;程序启动报错:Caused by: java.lang.IllegalStateException: Cannot map handler 'helloWorld' to URL path [/firstDemo]: There is already handler of type [class com.ack.handler.HelloSpringmvc] mapped.

下一节内容会结合实例来讲解SpringMVC的@RequestMapping注解




0 0