如何搭建springMVC开发环境

 我来答
就烦条0o
2016-05-23 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
方法/步骤
1
使用eclipse新建maven项目

2
生成的目录没有src/main/java,直接右键,NEW-FOLDER,会自动变成SOURCE FOLDER

3
修改pom文件
<properties>
<spring.version>4.0.2.RELEASE</spring.version>
<junit.version>4.11</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>

4
修改web.xml
<!DOCTYPE
web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"
> <web-app> <description>最简单的SpringMVC环境抢
建</description> <!-- 加载Srping配置文件
--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/spring/applicationContext.xml</param-value> </context-param> <!--
Spring 监听
--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--
SpringMVC配置
--> <servlet> <servlet-name>myspringmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--
自定义springmvc的配置文件名称和路径
--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/springmvc/springmvc-servlet.xml</param-value> </init-param> </servlet> <!--
springmvc 请求后缀
--> <servlet-mapping> <servlet-name>myspringmvc</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

5
根据web的配置,在src/main/resources文件夹下新建spring配置文件spring/applicationContext.xml
<?xml
version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd"> <beans> </beans>

6
根据web的配置,在src/main/resources文件夹下新建springmvc配置文件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:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> <!--
激活@Controller模式 --> <mvc:annotation-driven /> <!--
对包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 需要更改 --> <context:component-scan
base-package="com.my1.controller" /> <bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"
/> <bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property

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

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

7
新建com.my1.controller.DemoController.java
package com.my1.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class DemoController {
@RequestMapping(value = "/toPage1.htm")
public ModelAndView toPage1() {
return new ModelAndView("page1");
}
}

8
在WEB-INF目录下新建jsp/page1.jsp
<%@
page language="java" contentType="text/html;
charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta
http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1"> <title>Insert title
here</title> </head> <body> Page1 </body> </html>

9
修改index.jsp
<html>
<body>
<h2>Hello World!</h2>
<a href="toPage1.htm">To Page1</a>
</body>
</html>

10
新建个tomcat服务器,把项目加进去就可以运行了,看下最终的项目结构
在晴天的雨伞
2016-05-23 · TA获得超过6869个赞
知道大有可为答主
回答量:5761
采纳率:86%
帮助的人:1230万
展开全部

 通常在开发JavaEE项目中Web应用比较常用的框架组合Struts+Spring+Hibernate(SSH)和Struts+Spring+Mybatis(ibatis)(SSM)。

         当使用Spring的MVC时候,整个Web应用的层次更加简单和情绪。


引入SpringMVC所依赖的两个jar,Spring-web-*.jar Spring-webmv-*.jar(*表示对应的版本)


在Web应用(web.xml)中配置Spring WebAppliactionContext的监听

<context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>classpath:spring-context-*.xml</param-value>
   </context-param>
   <listener>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>

Spring的配置文件进行了拆分,配置文件名格式为:spring-context-*.xml, 位于classes(src)目录下。

在Web应用(web.xml)中配置Spring MVC的Servlet(SpringMVC的核心类,前端控制器,处理请求)<servlet>
       <servlet-name>spring</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:spring-web-servlet.xml</param-value>
       </init-param>
       <load-on-startup>2</load-on-startup>
   </servlet>
   
   <servlet-mapping>
       <servlet-name>spring</servlet-name>
       <url-pattern>/</url-pattern>
   </servlet-mapping>

      SpringMVC的默认配置文件名为:<servletname>-servlet.xml 并且位于WEB-INF下,上面通过servlet的初始化参数contextConfigLocation对配置文件重新设置和命名。

      关于servlet的url-pattern的设置非常重要的,并且很容易出错。上述配置表示所有的请求都要经servlet name是spring的这个servlet来处理,并且名为spring这个servlet的Web应用的默认servlet。

      关于servlet的url-pattern的设置可以仔细阅读这篇文章:http://blog.csdn.net/caoxu1987728/article/details/2757877


  


  4.处理特殊请求

        根据上面的配置所有请求就要经过spring这个servlet来处理,这样对静态文件的请求由于没有对应的请求处理程序,将无法访问到静态资源,这个问题的解决方法是在spring-web-servlet.xml(如果不设置默认名称为:spring-servlet.xml)中添加静态资源处理配置。

<mvc:resources location="/resource/css/" mapping="/resource/css/**"
       cache-period="3600000" />
   <mvc:resources location="/resource/images/" mapping="/resource/images/**"
       cache-period="3600000" />
   <mvc:resources location="/resource/js/" mapping="/resource/js/**"
       cache-period="3600000" />

  5.servlet的url-pattern

     a.如果url-pattern设置为:*.do,则请求通过扩展名类分发,就不存在4中的静态资源无法访问的问题

     b.如果url-pattern设置为:/*, 则请求经过再次转发,重定向将再次被名为spring的servlet拦截(导致.*.jsp无效得到解析),默认的servlet名则是取自对应的web应用服务器的默认servlet命名。


     下面配置是来自tomcat下conf/web.xml文件: 


<!-- 注: 由此看出tomcat的默认servlet name是default-->

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

<servlet-mapping>
       <servlet-name>jsp</servlet-name>
       <url-pattern>*.jsp</url-pattern>
       <url-pattern>*.jspx</url-pattern>
   </servlet-mapping>


    c.如果url-pattern设置为:/, 则覆盖了DefaultServlet,但是隐式的JspServlet仍然可以映射。   


    上面 a 是后缀映射,b是路径映射, c是默认映射,其它(/a/c/d, /a/b/c.do)这些都是精确的映射。

6.基于注解写一个SpringMVC的Controller用来处理请求

package com.name.web;

import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

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

@Controller
@RequestMapping(value = { "/hello" })
public class HelloController {

   @RequestMapping(value = "/index", method = RequestMethod.GET)
   public String index(HttpServletRequest request, Map<String, Object> model) {
       return "index";
   }
}

注:

        编写这个示例用到Spring的注解,SpringMVC的jsp视图处理。因此需要在spring-web-servlet.xml文件中添加如下配置:


     


<context:component-scan base-package="com.name.web"></context:component-scan>
<bean
       class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="viewClass"
           value="org.springframework.web.servlet.view.JstlView">
       </property>
       <property name="prefix" value="/WEB-INF/view/"></property>
       <property name="suffix" value=".jsp" />
   </bean>

   在/WEB-INF/view/下创建index.jsp文件,然后通过GET方式访问:http://localhost/webname/hello/index 将返回index.jsp中的内容。

7.Web应用中spring MVC和Spring WeabAppliactionContext(IOC)的关系

   从上面的web.xml配置文件中可以看到SpringMVC的集成我们使用了配置org.springframework.web.servlet.DispatcherServlet,而servlet确实是可以在一个Web应用中配置多个,所以我们可以配置多个这样的servlet。

  如下图是SpringWeb应用中Spring WebApplicationContext和Spring MVC(DispatcherServlet)的WebApplicationContext的关系

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式