【转】spring3 MVC实战,手工搭建Spring3项目demo

更新:这几天对spring3的理解又进了一步,今天抽空把这篇文章中的错误和不当之处做了修改。

最近的项目在用Spring3,涉及到了基于注解的MVC,事务管理,与hibernate的整合开发等内容,我打算写一个系列出来,记录下这个痛苦但又充满成就感的过程----网上实在太难找能让新手快速理解掌握的文章了

这篇文章专门针对使用Spring3进行开发的新手,高手就请绕道吧,也欢迎拍个砖再走...

我打算从这几个方面写:1.开发环境确认    2.Spring3的jar包    3.Spring3项目配置    4.其他

一、开发环境确认

    1.工具及版本

    jdk我用的是1.6的;jdk的下载安装和配置就不讲了,如果这个还搞不定还谈什么spring啊

    myeclipse用的是6.0(实在太落后啦,还是8.X舒服)不过这里是手工搭建不使用自动生成工具,所以版本无所谓的;使用eclipse for     javaEE也ok,不过跟myeclipse可能在项目目录上会有少许的不同,eclipse的web跟目录是WebContent,而myeclipse通常是WebRoot

    tomcat是6的,666,大顺哈

    2.确认

    为了保证开发环境正常请做一下确认,在运行里输入cmd打开命令行,输入java -version命令,显示类似如下内容:

    java version "1.6.0_23"
    Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
    Java HotSpot(TM) Client VM (build 19.0-b09, mixed mode, sharing)

然后,启动tomcat6,请确认控制台没有报错信息,控制台输出类似如下:

2011-1-19 14:58:27 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2011-1-19 14:58:27 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 255 ms
2011-1-19 14:58:27 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2011-1-19 14:58:28 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.20
2011-1-19 14:58:29 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2011-1-19 14:58:29 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2011-1-19 14:58:29 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/15  config=null
2011-1-19 14:58:29 org.apache.catalina.startup.Catalina start
信息: Server startup in 1401 ms

确认myeclipse或eclipse下server视图下有你的tomcat6且可以正常启动关闭,如果没有自行配置,如果不知道自己网上搜

确认你的myeclipse或eclipse下的java平台是刚才确认过的jdk1.6

这一部分最后一步,新建一个webProject,如果你用的是是eclipse for javaEE那么项目类型选择Static web project

注意,eclipse新建web项目需要选择target runtime,如果没有就配上你的tomcat6,myeclipse新建项目j2EE Specification Level项要选择javaEE5.0

 二、Spring3的jar包

   1.下载Spring3

    先到官网现在吧,上网址:http://www.springsource.org/download 现在最新版本是3.0.5,看图,点圈住区域的链接

   

现在点击之后需要注册用户才能下载,那就注册一下吧,spring这么伟大的开源项目,能不支持吗?当然你也可以选择下图所示的链接跳过
之后跳转到文件下载选择页面,需要下载两个文件:

    spring-framework-3.0.5.RELEASE-with-docs.zip  和   spring-framework-3.0.5.RELEASE-dependencies.zip

但是现在官方已经没有了 spring-framework-3.0.5.RELEASE-dependencies.zip的下载链接(这些依赖我们都可以分别到各自相关的开源项目下载),不知为何,你可以分别网上搜

spring-framework-3.0.5.RELEASE-with-docs.zip  解压后目录结构如下:


dependency的目录结构基本上全是以com.XX org.XX为名字的目录,太长了就不截图了。

下面就是导入了,导入前先说明白两点:

             1. spring3开始jar包不再包含全能的spring.jar了,而是分成20多个jar包了,配置可以按需引入了

             2. 项目中使用spring除了引入dist目录下的jar包,还需要dependencies下的一些依赖包,下面再具体说。

2.引入dist目录下除了下面三个其余所有包

org.springframework.web.struts-3.0.5.RELEASE.jar

org.springframework.spring-library-3.0.5.RELEASE.libd

org.springframework.web.portlet-3.0.5.RELEASE.jar

如何引入jar包,对项目鼠标右键选择【Build Path】,选择【Add Extenal Archives】,浏览到jar包的位置,打开即可

3.接下来,还必须导入日志相关的一个jar包---commons logging和一个名为com.springsource.org.aopalliance-1.0.0.jar的jar包

分别在spring-framework-3.0.5.RELEASE-dependencies\org.apache.commons\com.springsource.org.apache.commons.logging\1.1.1

及spring-framework-3.0.5.RELEASE-dependencies\org.aopalliance\com.springsource.org.aopalliance\1.0.0下

目录下。如果不引入部署项目tomcat会报如下错误:严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

三、spring3配置

1.web.xml配置

web.xml内容如下:       

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
  </context-param>
 <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 <!-- 对像js,css,gif等静态文件的访问,需要映射到默认的servlet -->

 <!-- 这里省去对静态资源url的配置,当然这样的话tomcat控制台就会报警告了,对html的请求、页面中的图片及css效果也是无法访问的

        不过我们这是搭基本环境嘛,就先不要图片吧,如果想解决这个问题,可以看我另外一篇文章
 -->
 <!-- 配置spring核心servlet -->
 <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>
  <!-- url配置为/,不带文件后缀,会造成其它静态文件(js,css等)不能访问。如配为*.do,则不影响静态文件的访问 -->
 </servlet-mapping>

</web-app>

2.Spring应用上下文配置,在web.xml中我们配置了spring的servlet -----<servlet-name>spring</servlet-name>

web.xml里有这一段

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </context-param>

用于开启基于注解的springMVC功能那么我们需要在跟web.xml同一目录下新建一个spring-servlet.xml文件,内容为:

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
     <!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射-->
     <mvc:annotation-driven />

     <!-- 启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean -->
     <context:component-scan base-package="com.mvc.rest" />

     <!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 -->
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/view/" p:suffix=".jsp" />
</beans>

配置是不是很清爽?多亏spring3增加的mvc、context、tx等几个命名空间了

四、其他

1.建包

新建一个包,包名就是我们Spring-mvc.xml里 <context:component-scan base-package="com.mvc.rest"></context:component-scan> 
里的com.mvc.rest

2.建立Constroller

在com.mvc.rest包下新建一个java类,代码如下:

package com.mvc.rest;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class RestConstroller {
 
 public RestConstroller() {
 }
 
 @RequestMapping(value = "/login/{user}", method = RequestMethod.GET)
 public ModelAndView myMethod(HttpServletRequest request,
   HttpServletResponse response, @PathVariable("user")
   String user, ModelMap modelMap) throws Exception {
  
  modelMap.put("loginUser", user);
  return new ModelAndView("/login/hello", modelMap);
 }

 @RequestMapping(value = "/welcome", method = RequestMethod.GET)
 public String registPost() {
  return "/welcome";
 }
}

3.建视图

正如spring-servlet.xml里

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/view/" p:suffix=".jsp" />所配置的视图路径,我们需要在WEB-INF下建立view目录,在view下建立jsp文件;

正如RestConstroller里两个方法的返回语句:return new ModelAndView("/login/hello", modelMap);和return "/welcome";所约定,我们需要在view下建立相应的login目录并在其下建立hello.jsp,在/WEB-INF/view下建立welcome.jsp
hello.jsp内容如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'hello.jsp' starting page</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">

  </head>
 
  <body>
    你好:<%=request.getAttribute("loginUser") %>,现在时间是<%= new Date() %>
  </body>
</html>

welcome.jsp就随意吧,测试嘛.

 4.部署访问

在myeclipse下部署项目并运行

打开浏览地址栏输入:http://localhost:8080/sandDemo001/login/heamer 这里的heamer是自定义的,作为请求参数解析

输入:http://localhost:8080/sandDemo001/welcome  则显示你welcome.jsp应该显示的内容。

整个过程已经完成,需要注意的有几方面,1.环境一定要是可用的  2.jar包正确的引入到项目中   3.配置文件要小心修改,不要犯括号不配对类似的低级错误

关于Constroller里的注解的用法这里暂不做讲解,以后有时间再发文;搭建配置过程已经亲测,如有谬误敬请指正。

时间: 2024-09-10 16:31:20

【转】spring3 MVC实战,手工搭建Spring3项目demo的相关文章

ssh整合-使用spring3.X+Hibernate4.X来做项目,报异常 No Session found for current thread

问题描述 使用spring3.X+Hibernate4.X来做项目,报异常 No Session found for current thread org.hibernate.HibernateException: No Session found for current thread at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:97) at

关于spring3 mvc注解的优缺点请教

问题描述 spring3 mvc注解的确让开发时候省了繁琐的配置, 但是带来另一个问题就是维护性,这等于硬编码进去的,后面维护的话,想找一个url 映射到那个controller必须挨个代码看或者搜索,这太恶心了, 大家是怎么看待这个问题的? 解决方案 我不觉得是一个问题,反而和'命名原则'一致:名称必须是简单而有意义的.url路径:必须有意义,看了就知道是什么,推荐REST风格的controller类名:其实基本上看url都能猜出类名.配置文件是配置集中化了,只是省略了上面的第二步而已,如果做

asp.net mvc实战-学习笔记(1)

写这玩意主要是为了锻炼一下英文水平 第一篇翻译的比较详细 一个是看看这个书翻译容易不容易 第二个是看看自己有没有这个水平 接下来的翻译可能就只检重点的翻译了   Asp.net mvc 实战Jeffrey PalermoBen ScheirmanJimmy Bogard   Asp.net mvc framework入门 这一章主要包括:1 asp.net mvc框架的系统要求2 运行第一个项目3 "HellowWorld"示例4 强类型视图5 路由基础 在微软平台上开发web项目的时

搭建springMVC项目,web.xml配置,及分析。

突发奇想,根据所学,自己搭建springMVC项目,然后逐渐添加其他框架,构建一个后台管理系统. 也算是巩固以前学的基础了. 至于用了哪些jar包,没仔细看,因为用的是maven来管理,就把项目可能用到的所有jar包,都引入进去了. web项目,最基础的配置,就在web.xml中. 先看完所有的配置文件,在看错误日志分析. 默认欢迎页面. <welcome-file-list> <welcome-file>/pages/index.jsp</welcome-file>

通过MAVEN快速搭建一个项目(一)

                            通过MAVEN快速搭建一个项目 什么是MAVEN? MAVEN是一个软件管理工具.Maven项目中所有配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目,包括编译,构建,测试,发布,报告等等.目前也是最流行的项目管理工具. Maven与ant 的区别 MAVEN是项目管理工具,ANT只是项目构建工具.这点是本质的.ANT一般只会被用于项目的编译,构建,测试等.但是maven的功能远远高于ant除了以上功能以

从摆脱Data Guard手工搭建及维护的烦恼说起

讲师介绍  杨建荣 搜狐畅游高级DBA   DBAplus社群联合发起人.现就职于搜狐畅游,Oracle ACE-A.YEP成员,超7年数据库开发和运维经验,擅长电信数据业务.数据库迁移和性能调优. 持Oracle 10G OCP,OCM,MySQL OCP认证,<Oracle DBA工作笔记>作者.   本次分享将分为以下几部分: 半自动化搭建Data Guard 用不用DG Broker 几个实用场景演练 与时俱进:Oracle 12c Data Guard改进 诊断案例:备库批量查询失败

搭建测试项目,提示找不到资源包,新人求指教,JDK+TOMCAT+MYSQL+JAVA WEB项目

问题描述 搭建测试项目,提示找不到资源包,新人求指教,JDK+TOMCAT+MYSQL+JAVA WEB项目 我是把 WEB项目的整个文件夹放到 TOMCAT的WEBAPPS下的 下图为问题的表现: 在点击登录时出现的 下图为登录界面 我在网络上查询,疑似是 资源映射位置错误,但我对着别人的解释逐个对比,没发现哪里错了.死活搭不成功,心塞得厉害 下面是我的资源图 项目文件位置图 登录页面位置图 SERVLET资源映射设置图 SERVLET资源实际位置图 SERVLET资源 的网址映射 还请各位前

跪求《实战突击 Java Web项目整合开发》的光盘

问题描述 跪求<实战突击 Java Web项目整合开发>的光盘 解决方案 <实战突击:Java Web项目整合开发>简介及源码 解决方案二: fsd hnf a 肚子上的撒 吧广东省不错vfgxcgcbcb 高兴股份感到vcbc部分 解决方案三: fsd hnf a 肚子上的撒 吧广东省不错vfgxcgcbcb 高兴股份感到vcbc部分

《VMware vSphere 6.0虚拟化架构实战指南》——2.2 本书实战环境搭建

2.2 本书实战环境搭建 拥有一个好的环境,对于VMware vSphere 6.0的学习可以起到事半功倍的效果.作者推荐使用物理环境进行学习,如果条件不允许使用物理环境,建议配置一台高性能台式机或服务器,安装使用VMware Workstation进行模拟. 2.2.1 实战环境配置 为了保证操作的真实性及可复制性,作者使用了全物理设备构建VMware vSphere 6.0环境.需要说明的是:本书特别介绍了VMware最新发布的软件定义的存储(Virtual SAN 6.0,VSAN 6.0