spring3+MVC实战
SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。
另外spring的aop,事务管理等等都是我们经常⽤到的。
Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。
mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。
mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。
在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。
使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。
2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。
spring MVC原理及配置

spring MVC原理及配置springmvc原理及配置springmvc原理及配置1.springmvc详述:springmvc就是spring提供更多的一个强悍而有效率的web框架。
借助注释,springmvc提供更多了几乎就是pojo的研发模式,使控制器的研发和测试更加直观。
这些控制器通常不轻易处置命令,而是将其委托给spring上下文中的其他bean,通过spring的倚赖转化成功能,这些bean被转化成至控制器中。
springmvc主要由dispatcherservlet、处理器映射、处理器(控制器)、视图解析器、视图组成。
他的两个核心是两个核心:处理器映射:选择使用哪个控制器来处理请求视图解析器:选择结果应该如何渲染通过以上两点,springmvc确保了如何挑选掌控处置命令和如何挑选视图展现出输入之间的松耦合。
2.springmvc运行原理这里写图片描述(2)找寻处理器:由dispatcherservlet控制器查阅一个或多个handlermapping,找出处置命令的controller。
(3)调用处理器:dispatcherservlet将请求提交到controller。
(4)(5)调用业务处置和回到结果:controller调用业务逻辑处置后,回到modelandview。
3.springmvc接口解释(1)dispatcherservlet接口:spring提供的前端控制器,所有的请求都有经过它来统一分发。
在dispatcherservlet将请求分发给springcontroller 之前,需要借助于spring提供的handlermapping定位到具体的controller。
(2)handlermappingUSB:能够完成客户请求到controller映射。
(3)controller接口:须要为mammalian用户处置上述命令,因此同时实现controllerUSB时,必须确保线程安全并且可以器重。
Spring MVC 简明教程

Spring框架从创建伊始就致力于为复杂问题提供强大的、非侵入性的解决方案。
Spring 2.0当中为缩减XML配置文件数量引入定制命名空间功能,从此它便深深植根于核心Spring框架(aop、context、jee、jms、 lang、tx和util命名空间)、Spring Portfolio项目(例如Spring Security)和非Spring项目中(例如CXF)。
Spring 2.5推出了一整套注解,作为基于XML的配置的替换方案。
注解可用于Spring管理对象的自动发现、依赖注入、生命周期方法、Web层配置和单元/集成测试。
探索Spring 2.5中引入的注解技术系列文章由三部分组成,本文是其中的第二篇,它主要讲述了Web层中的注解支持。
最后一篇文章将着重介绍可用于集成和测试的其它特性。
这个系列文章的第一部分论述了Java注解(annotation)是如何代替XML来配置Spring管理对象和依赖注入的。
我们再用一个例子回顾一下:@Controllerpublic class ClinicController {private final Clinic clinic;@Autowiredpublic ClinicController(Clinic clinic) {this.clinic = clinic;}...@Controller表明ClinicController是Web层组件,@Autowired请求一个被依赖注入的Clinic实例。
这个例子只需要少量的XML语句就能使容器识别两个注解,并限定组件的扫描范围:<context:component-scanbase-package="org.springframework.samples.petclinic"/>这对Web层可谓是个福音,因为在这层Spring的XML配置文件已日益臃肿,甚至可能还不如层下的配置来得有用。
SpringMVC框架搭建流程(完整详细版)

SpringMVC框架搭建流程(完整详细版)SpringMVC框架搭建流程开发过程1)配置DispatcherServlet前端控制器2)开发处理具体业务逻辑的Handler(@Controller、 @RequestMapping)3) xml配置⽂件配置controller扫描,配置springmvc三⼤件4)将xml⽂件路径告诉springmvc(DispatcherServlet)详细流程:创建⽬录新建maven项⽬,注意选择webapp⾻架。
创建成功之后会发现没有src等⽬录,这些需要我们⼿动创建:在src下⾯新建main,main下⾯新建java⽬录,选择java⽬录,右键,在main下⾯继续新建resource⽬录,选择resource⽬录,右键,pom.xmlpom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId></groupId><artifactId>springmvc-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><piler.source>11</piler.source><piler.target>11</piler.target></properties><dependencies><!--引⼊spring webmvc的依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.12.RELEASE</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8080</port><path>/</path></configuration></plugin></plugins></build></project>注意Tomcat7插件是⽤来运⾏项⽬的,右侧运⾏:springmvc相关配置main⽂件夹下⾯新建webapp⽂件夹,webapp下⾯新建WEB-INF,下⾯新建web.xml<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><!--⽅式⼀:带后缀,⽐如*.action *.do *.aaa该种⽅式⽐较精确、⽅便,在以前和现在企业中都有很⼤的使⽤⽐例⽅式⼆:/ 不会拦截 .jsp,但是会拦截.html等静态资源(静态资源:除了servlet和jsp之外的js、css、png等)为什么配置为/ 会拦截静态资源因为tomcat容器中有⼀个web.xml(⽗),你的项⽬中也有⼀个web.xml(⼦),是⼀个继承关系⽗web.xml中有⼀个DefaultServlet, url-pattern 是⼀个 /此时我们⾃⼰的web.xml中也配置了⼀个 / ,覆写了⽗web.xml的配置为什么不拦截.jsp呢?因为⽗web.xml中有⼀个JspServlet,这个servlet拦截.jsp⽂件,⽽我们并没有覆写这个配置,所以springmvc此时不拦截jsp,jsp的处理交给了tomcat如何解决/拦截静态资源这件事?⽅式三:/* 拦截所有,包括.jsp--><!--拦截匹配规则的url请求,进⼊springmvc框架处理--><url-pattern>/</url-pattern></servlet-mapping></web-app>⾥⾯配置了springmvc相关的配置,引⼊了springmvc.xml:在resource⽬录下新建springmvc.xml:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beanshttps:///schema/beans/spring-beans.xsd/schema/contexthttps:///schema/context/spring-context.xsd/schema/mvchttps:///schema/mvc/spring-mvc.xsd"><!--开启controller扫描--><context:component-scan base-package=".controller"/><!--配置springmvc的视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean><!--⾃动注册最合适的处理器映射器,处理器适配器(调⽤handler⽅法)--><mvc:annotation-driven/></beans>在java⽬录下新建包.controller,下⾯新建DemoController:package .controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import java.util.Date;/*** @author lyj* @Title: DemoController* @ProjectName springmvc-demo* @Description: TODO* @date 2020/6/9 21:21*/@Controller@RequestMapping("/demo")public class DemoController {/*** http://localhost:8080/demo/handle01*/@RequestMapping("/handle01")public ModelAndView handle01(){Date date=new Date();ModelAndView modelAndView=new ModelAndView();modelAndView.addObject("date",date);modelAndView.setViewName("success");return modelAndView;}}在WEB-INF下⾯新建jsp⽂件夹,下⾯新建success.jsp:<%@ page language="java" isELIgnored="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body>当前时间 ${date}</body></html>完毕后整个项⽬结构如下:测试:浏览器访问:。
什么是SpringMVC?

什么是SpringMVC?⼀、什么是SpringMVC?1.SpringMVC 是⼀种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow 中。
2.SpringMVC = Spring +MVCspring mvc类似于struts的⼀个MVC开框架,其实都是属于spring,spring mvc需要有spring的架包作为⽀撑才能跑起来.spring是⼀个⼀站式的框架,提供了表现层(springmvc)到业务层(spring)再到数据层(springdata)的全套解决⽅案;spring的两⼤核⼼IOC(控制反转)和AOP(⾯向切⾯编程)更是给我们的程序解耦和代码的简介提供了⽀持。
Spring框架图:从Spring的结构图可以看出,springMVC位于spring web端的⼀个框架,是⼀种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使⽤了MVC架构模式的思想,将web层进⾏职责解耦。
附:基于请求驱动指的就是使⽤请求-响应模型。
从名字上就可以窥探出,Spring>SpringMVC,那么事实上,spring和SpringMVC是⼀种⽗⼦关系。
SpringMVC是spring扩展出的⼀个应⽤于web端的框架。
在这⾥需要注意的⼀点,就是到底什么是⽗⼦容器关系:spring主要的作⽤是黏合其他模块组件,进⾏统⼀管理,springmvc则主要是负责web端。
那么,我们都知道,我们在应⽤spring的时候,可以使⽤注⼊。
这个时候,如果我们的web端是⽤的SpringMVC,这个时候,controller理论上是通过SpringMVC去注⼊,但是,使⽤spring注⼊,同样是可⾏的。
同理,service等层,使⽤SpringMVC配置的统⼀扫描装配也是可以的。
SpringMVC+Hibernate4+Spring3整合开发

SpringMVC+Hibernate4+Spring3整合开发·使用开发工具Myeclipse2014 、Subversion、·首先新建立一个项目SHSpringMVC ,组织好文件结构·将所建立的简单的项目发布到SVN服务器上,(如果你仅仅是想在本机搭建一个开发环境的话,不必要用SVN的,下面关于svn的发布,可以略过)选择SVN 点击Next;找到你的SVN服务资源库,如果没有的话,可以选择创建新的资源库位置;默认点击finish,然后把项目提交上去,就OK了,开始配置三个框架的开发,严谨来说是两个框架;看到如下图所示的界面说明你的项目就发布到SVN服务器上了;·接下来,就要配置开发包,也就是支持的JAR包,首先添加Spring支持,同时呢SpringMVC也是添加上了,我们要做的就是配置MVC框架;配置过程分为手动配置和自动配置,现在大部分工具都支持了自动配置,很少人再去手动配置编写配置文件了,那我们就采用自动配置的方式配置这两大框架的整合开发环境;在项目上右键→Myeclipse→Project Facets→Install Spring Facet持,点击Finish;右键空白处→new 按照下图所示配置,添加Hibernate支持,项目右键→myeclipse→project facets→install hibernate facet选择你刚刚创建的一个数据源,也就是下图显示的DB Driver,下面的一些信息就自动生成了;就选择默认核心包,没必要增加其他插件,OK 了;·增加完成之后,Hibernate 在applicationContext.xml 文件之中增加了如下的几个配置; <bean id ="sessionFactory" 这个bean 是用来连接数据库的,但是缺少了数据库的连接属性,连接属性,我们刚刚放到hibernate.cfg.xml文件之中了,但是为了项目的方便移植和可维护方便,我们就要把配置写到一个配置文件之中,所以需要在applicationContext.xml文件的sessionFactory这个bean之中增加priperty属性;class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="configLocation"value="classpath:hibernate.cfg.xml"></property>→当我们将c3p0的数据库配置添加好之后,这个配置也就可以删掉了;</bean><bean id="transactionManager"→这个bean用来配置事务提交的,不过还不完善,还需要配置很多东西,class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory"ref="sessionFactory"/> </bean>·下面我们新建立一个db.properties的资源文件,用来编写数据库连接信息;db.driverClass=org.gjt.mm.mysql.Driverdb.url=jdbc:mysql://localhost:3306/mysqlername=rootdb.password=mysqladmin我们怎么用这个配置文件呢,当然是需要在applicationContext.xml文件之中配置了;要想知道怎么配置使用这个database.properties这个资源文件,我们必须要了解的当然是ComboPooledDataSource这个类了,ng.Objectcom.mchange.v2.c3p0.impl.AbstractIdentityTokenizedcom.mchange.v2.c3p0.impl.IdentityTokenResolvablecom.mchange.v2.c3p0.impl.PoolBackedDataSourceBasecom.mchange.v2.c3p0.impl.AbstractPoolBackedDataSourcecom.mchange.v2.c3p0.AbstractComboPooledDataSourceboPooledDataSource我们看到ComboPooledDataSource这个类本身仅仅定义了几个构造方法而已,我们需要从他的父类中查找看看;我们能从文档中查到,有很多的setter、getter方法,这意味着什么呢,通过反射调用可以设置内容;也就是说,配置的dataSource这个bean的property的name值都是一定的,也就是不能自己定义,需要用提供好的那些属性名称,值也是有范围的;<bean id="dataSource"class="boPooledDataSource"destroy-method="close"><property name="driverClass"value="${db.driverClass}"/><property name="jdbcUrl"value="${db.url}"/><property name="user"value="${ername}"/><property name="password"value="${db.password}"/><property name="maxPoolSize"value="10000"/><property name="minPoolSize"value="1"/><property name="initialPoolSize"value="1"/><property name="maxIdleTime"value="20"/></bean>配置完成此bean就可与修改sessionFactory这个bean了,我们需要做的就是将其中的property修改为<bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"/></bean>配置好这里,那hibernate.cfg.xml文件之中的数据库连接信息也就不需要了,我们就可以直接删掉了,hibernate.cfg.xml文件就编程如下的配置了,可以添加show_sql 、format_sql<?xml version='1.0'encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/dtd/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration><session-factory><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="myeclipse.connection.profile">mysql</property><property name="show_sql">true</property><property name="format_sql">true</property></session-factory></hibernate-configuration>下面还是需要配置applicationContext.xml文件,配置事务通知属性,这个我也不是很了解怎么配置的,在网上找了一份,可以按照这个配置;<tx:advice id="txAdvice"transaction-manager="transactionManager"> <tx:attributes><tx:method name="update*"propagation="REQUIRED"/><tx:method name="insert*"propagation="REQUIRED"/><tx:method name="edit*"propagation="REQUIRED"/><tx:method name="save*"propagation="REQUIRED"/><tx:method name="add*"propagation="REQUIRED"/><tx:method name="new*"propagation="REQUIRED"/><tx:method name="set*"propagation="REQUIRED"/><tx:method name="remove*"propagation="REQUIRED"/><tx:method name="delete*"propagation="REQUIRED"/><tx:method name="change*"propagation="REQUIRED"/><tx:method name="get*"propagation="REQUIRED"read-only="true"/><tx:method name="list*"propagation="REQUIRED"read-only="true"/><tx:method name="find*"propagation="REQUIRED"read-only="true"/><tx:method name="load*"propagation="REQUIRED"read-only="true"/><tx:method name="*"propagation="REQUIRED"read-only="true"/> </tx:attributes></tx:advice>然后需要找一个log4j.properties的组件,在hibernate的开发文件包之中有一个,应该可以用,你从网上下载好hibernate的文件解压之后,从下面的这个目录可以找到一个log4j.properties文件;\hibernate-release-4.3.8.Final\hibernate-release-4.3.8.Final\project\etc最后要为项目添加annotation、aop、mvc开发支持,最重要的不要忘了,添加database.properties文件的位置,放到dataSource的bean上面就可以了;<context:property-placeholder location="classpath:database.properties"/>配置Annotation<context:annotation-config/><context:component-scan base-package="cn.oracle"/><mvc:annotation-driven/><mvc:default-servlet-handler/>接下来配置web.xml文件,配置Spring MVC的默认servlet处理用户请求;<servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet -class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value> </init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping>此时你把项目部署到tomcat 或者weblogic上,看会不会报错,不报错误应该可开发使用了;如果你还要配置Springmvc的资源文件的话,还需要在applicationContext.xml文件之中配置另外一个bean <bean id="messageSource"class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"><array><value>Message</value><value>Pages</value></array></property></bean>这上面的配置其实就是配置了ResourceBundleMessageSource 这个类下的basenames属性;private String[] basenames = new String[0];。
Spring3.0 MVC 中文教程

Spring3 MVC - 3到Spring MVC框架简介Spring3 MVC框架简介Spring MVC是Spring的框架的Web组件。
它提供了丰富的功能,为建设强大的Web应用程序。
Spring MVC框架的架构,并在这样的高度可配置的方式,每一块的逻辑和功能设计。
此外Spring可以毫不费力地与其他流行的Web框架,如Struts,WebWork的,的Java Server Faces和Tapestry集成。
这意味着,你甚至可以告诉Spring使用Web框架中的任何一个。
比Spring更不紧耦合的servlet或JSP 向客户端呈现视图。
喜欢速度与其他视图技术集成,Freemarker的,Excel或PDF现在也有可能。
Spring3.0 MVC系列∙第1部分:到Spring 3.0 MVC框架简介∙第2部分:在Spring 3.0 MVC创建Hello World应用程序∙第3部分:在Spring 3.0 MVC的形式处理∙第4部分:Spring3 MVC的Tiles Support与Eclipse中的例子插件教程∙第5部分:Spring3 MVC的国际化及本地化教程与范例在Eclipse∙第6部分:Spring3 MVC示例教程Spring主题∙第7部分:创建Spring3 MVC Hibernate 3的示例在Eclipse中使用Maven的在Spring Web MVC,你可以使用任何对象作为命令或表单支持对象,你不需要实现框架特定的接口或基类。
Spring的数据绑定是高度灵活的:例如,将验证错误类型不作为应用系统错误,可以通过评估的不匹配。
因此,你不必重复你的业务对象的属性,简单的无类型的字符串,在表单对象仅仅是为了处理无效的意见,或正确转换的字符串。
相反,它往往是最好直接绑定到业务对象。
请求处理生命周期Spring的Web MVC框架是,像许多其他Web MVC框架,要求为导向,围绕一个中心的servlet,它把请求分派给控制器,提供其他功能,有利于开发Web应用而设计的。
SpringMVC使用ModelAndView进行重定向

SpringMVC使⽤ModelAndView进⾏重定向1、Servlet重定向forward与redirect:使⽤servlet重定向有两种⽅式,⼀种是forward,另⼀种就是redirect。
forward是服务器内部重定向,客户端并不知道服务器把你当前请求重定向到哪⾥去了,地址栏的url与你之前访问的url保持不变。
redirect则是客户端重定向,是服务器将你当前请求返回,然后给个状态标⽰给你,告诉你应该去重新请求另外⼀个url,具体表现就是地址栏的url变成了新的url。
2、ModelAndView重定向:使⽤Spring MVC通常是使⽤ModelAndView⽤来返回视图。
ModelAndView其实也是⽀持Servlet中的两种重定向⽅式。
⽐如404页⾯我们⼀般采⽤redirect重定向⽅式,像下⾯的代码就是redirect重定向:public ModelAndView getPage404MV() {ModelAndView mv = new ModelAndView("redirect:/404.htm");return mv;}要使⽤forward重定向就只需把redirect换成forward即可,特别的ModelAndView默认使⽤forward重定向⽅式。
1. 需求背景需求:spring MVC框架controller间跳转,需重定向。
有⼏种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页⾯也能显⽰。
本来以为挺简单的⼀件事情,并且个⼈认为⽐较常⽤的⼀种⽅式,⼀百度全都有了,这些根本不是问题,但是⼀百度居然出乎我的意料,⼀堆都不是我想要的结果。
⽆奈啊,⾃⼰写⼀篇⽐较全都供以后⼤家⼀百度吧,哈哈哈。
是这些写的不是很全都⼈们给了我写这篇博客的动⼒。
2. 解决办法需求有了肯定是解决办法了,⼀⼀解决,说明下spring的跳转⽅式很多很多,我这⾥只是说⼀些⾃我认为好⽤的,常⽤的,spring分装的⼀些类和⽅法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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通常是WebRoottomcat是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-80802011-1-19 14:58:27 org.apache.catalina.startup.Catalina load信息: Initialization processed in 255 ms2011-1-19 14:58:27 org.apache.catalina.core.StandardService start信息: Starting service Catalina2011-1-19 14:58:28 org.apache.catalina.core.StandardEngine start信息: Starting Servlet Engine: Apache Tomcat/6.0.202011-1-19 14:58:29 org.apache.coyote.http11.Http11Protocol start信息: Starting Coyote HTTP/1.1 on http-80802011-1-19 14:58:29 mon.ChannelSocket init信息: JK: ajp13 listening on /0.0.0.0:80092011-1-19 14:58:29 org.apache.jk.server.JkMain start信息: Jk running ID=0 time=0/15 config=null2011-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先到官网现在吧,上网址:/download现在最新版本是3.0.5,看图,点圈住区域的链接现在点击之后需要注册用户才能下载,那就注册一下吧,spring这么伟大的开源项目,能不支持吗?当然你也可以选择下图所示的链接跳过之后跳转到文件下载选择页面,需要下载两个文件:spring-framework-3.0.5.RELEASE-with-docs.zip 和 spring-framewo rk-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.jarorg.springframework.spring-library-3.0.5.RELEASE.libdorg.springframework.web.portlet-3.0.5.RELEASE.jar如何引入jar包,对项目鼠标右键选择【Build Path】,选择【Add Extenal Archives】,浏览到jar包的位置,打开即可3.接下来,还必须导入日志相关的一个jar包---commons logging和一个名为.aopalliance-1.0.0.jar的jar包分别在spring-framework-3.0.5.RELEASE-dependencies\mons\com.sp mons.logging\1.1.1及spring-framework-3.0.5.RELEASE-dependencies\org.aopalliance\com.sprin .aopalliance\1.0.0下目录下。
如果不引入部署项目tomcat会报如下错误:严重: Exception sending context initialized event to listener instance of classorg.springframework.web.context.ContextLoaderListenerng.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="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/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.ContextLoader Listener</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</s ervlet-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="/schema/beans"xmlns:context="/schema/context"xmlns:p="/schema/p"xmlns:mvc="/schema/mvc"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.0.xsd/schema/context/schema/context/spring-context.xsd/schema/mvc/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" /><!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResol ver" p:prefix="/WEB-INF/view/" p:suffix=".jsp" /></beans>配置是不是很清爽?多亏spring3增加的mvc、context、tx等几个命名空间了四、其他新建一个包,包名就是我们spring-servlet.xml里 <context:component-scan base-package="com.mvc.rest"></context:component-scan>里的com.mvc.rest2.建立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;@Controllerpublic 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里class="org.springframework.web.servlet.view.InternalResourceViewResol ver" p:prefix="/WEB-INF/view/" p:suffix=".jsp" />所配置的视图路径,我们需要在WEB-INF下建立view目录,在view下建立jsp文件;正如RestConstroller里两个方法的返回语句:return newModelAndView("/login/hello", modelMap);和return "/welcome";所约定,我们需要在view下建立相应的login目录并在其下建立hello.jsp,在/WEB-INF/view下建立welcome.jsphello.jsp内容如下:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+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 应该显示的内容。