❶ springmvc中的怎么配置多个
场景描述:有多个数据库,每个数据库可能分布在不同的mysql instance上面,有多个存储过程,每个存储过程可能分布在不同的数据库中,需要有两个配置文件。1. mysql 数据库映射:A.driverClassName=com.mysql.jdbc.DriverA.url=jdbc:mysql://172.20.7.51:3308/blogA.username=trappuserA.password=Opera1!B.driverClassName=com.mysql.jdbc.DriverB.url=jdbc:mysql://localhost:3306/weddingB.username=rootB.password=opera上面定义的A、B为两个mysql instance的缩写。2. 存储过程与mysql instance的映射关系:SP_Get_User=AGetStocks=B定义两个模拟存储过程,第一个数据库“SP_Get_User“是在数据库A下面,第二个数据库”GetStocks“是在数据库B下面。3. 建立自定义的sessionFactory3.1 xml配置的datasource及sessionFactory如下:<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource"><property name="driverClassName" value="${database.driverClassName}"/><property name="url" value="${database.url}"/><property name="username" value="${database.username}"/><property name="password" value="${database.password}"/></bean><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="packagesToScan" value="com.xx.assetcommander"></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop></props></property></bean>此处我们定义的sessionFactory的类型为LocalSessionFactoryBean,它是一个工厂对象,与我们再需要的 SessionFactory不是一回事,我们需要的sessionfactory是org.hibernate.SessionFactory,这个对象可以被第一个sessionFactory的getObject()方法生成。3.2 由于我们连接的是多个mysql instance, 不方便在xml中配置多个datasource和多个sessionFactory,故可以通过纯java的形式开发,可以使用map来存储存储过程与mysql database的关系,将存储过程的名字和数据库建议关系,这样通过存储过程的名称就能得到数据库的缩写名,通过数据库的缩写名能够找到对应的mysql instance,使用纯java开发的过程类似于xml配置,如下:ds.setDriverClassName(getDriver());ds.setUrl(getUrl());ds.setUsername(getUsername());ds.setPassword(getPassword());LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();sessionFactory.setDataSource(ds);sessionFactory.setPackagesToScan("com.xx.assetcommander");Properties params = new Properties();params.setProperty("hibernate.dialect","org.hibernate.dialect.MySQLDialect");params.setProperty("hibernate.show_sql", "true");sessionFactory.setHibernateProperties(params);当我们获得可以使用的LocalSessionFactoryBean时候,在调用getObject()获得SessionFactory之前,必须要调用afterPropertiesSet()方法,否则得到的sessionFactory为空。public Session getDsBySp(String spName) throws IOException {//get the corresponding mysql database shortname by sp nameString dbName = getDbForSP(str);//get the corresponding mysql instance connection by mysql database shortnameLocalSessionFactoryBean fB = getDsByDb(dbName);// don't forget this line or null will be returned when you call getObject() method.fB.afterPropertiesSet();return fB.getObject().openSession();} 注:在tomcat启动时,如果没有配置任何datasource,会出现如下错误:org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined故需要配置默认的datasource.这种方式需要做到不同的数据库instance直接业务的完全独立,不可以出现跨数据库的表join,否则处理难度会增加。还有就是对于多数据库直接的事务管理如何去处理?
❷ springmvc 静态文件获取配置文件
让静态资源不被SpringMVC分配器过滤有两种办法: ① 把所有的 js 和 CSS 文件移至别… 文件夹需要被过滤的文件类型分别写一个 mapping第二种方法是在web.xml配置静态资
❸ spring mvc 如何配置最简洁的
SpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。通过策略接口,Spring框架是高度可配置的,而且包含多种视图技术,例如JavaServerPages(JSP)技术、Velocity、Tiles、iText和POI。SpringMVC框架并不知道使用的视图,所以不会强迫您只使用JSP技术。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。Lifecycleforoverridingbinding,validation,etc,易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试。它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架,对于初学者或者想了解mvc的人来说我觉得spring是最好的,它的实现就是教科书!第二它和tapestry一样是一个纯正的servlet系统,这也是它和tapestry相比struts所没有的优势。而且框架本身有代码,看起来容易理解。关于SpringMVCController层的单元测试测试准备工作:1、搭建测试Web环境[email protected](UnitilsJUnit4TestClassRunner.class)@SpringApplicationContext({"classpath:*.xml","file:src/main/webapp/WEB-INF/spring-configuration/*.xml","file:src/main/webapp/WEB-INF/*.xml"})2、注入Controller类[email protected];3、编写测试数据测试数据的文件名一定要与测试类的文件名相同,比如测试数据BeanControllerTest.xml,测试类BeanControllerTest。4、注入测试数据[email protected]@DataSetpublicvoidtestBean(){}MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下SpringMVC的一些使用心得。之前的项目比较简单,多是用JSP、Servlet+JDBC直接搞定,在项目中尝试用Struts(StrutsMVC)+Spring+Hibernate,严格按照分层概念驱动项目开发,因项目需求一直不断变化,功能不断扩充、增强,技术构建也几经改变到目前有个稳定的应用,体会了很多感受,这次先对SpringMVC层进行一些个人总结。MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,C(控制器)将V(视图、用户客户端)与M(模块,业务)分开构成了MVC,这边不去讨论项目中是否应用MVC,也不针对MVC的实现原理进行讲解,而是探讨实践中如何从应用SSH,到Struts(StrutsMVC)+Spring+Hibernate的演化过程。先看Struts如何与Spring结合处理一次简单的请求响应代码,前台可以设为用AJAX调用:1.在struts-config.xml文件中加入2.在applicationContext.xml文件中加入3.cn.base.GetPersonListAction实现请求响应代码可以看出一次请求需求如此多的步骤,在加上一个项目下来有很多这样的请求响应,将给配置文件管理带来很大的麻烦。经过对Spring的深入应用,Spring本身提供的URL请求控制,对其天然支持可以让我们不需要applicationContext.xml再次声明一次URL请求Bean,即减少了Struts的声明URL,达到减少些繁琐的配置。但只是少了一些而已,同样也会面临着配置文件的管理问题。Spring注解将给我们的工作带来些轻松,利用反射机制原理出现的注解就是为了解决配置大量的配置问题。请看下处理一次简单的请求响应代码@Controller–声明控制器@RequestMapping("/person")–声明{@Autowired–业务接口注入;/***获得人员列表*@paramrequest*@paramresponse*@throwsException*/@RequestMapping(params="method=geList")–即处理/person.do?method=geList方法publicvoidgetnodeList(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//处理请求//处理响应}}可以看出,在代码上加入注解可以省去我们上面说的多个配置文件的工作,达到简便的MVC处理请求响应。在配上简单的配置文件声明,即可轻松处理项目的全部请求控制工作。SpringMVC乱码问题在使用SpringMVC做javaWeb项目时,乱码问题时常都会出现,解决方法也不尽相同,有简单也有复杂的;如果加入了Spring框架之后就不一样了,可以采用Spring框架自带的过滤器CharacterEncodingFilter,这样可以大大减轻了我们的工作量,即简单方便又容易理解,配置方式如下:在web.xml文件中filter的位置加上如下内容:encodingFilterorg.springframework.web.filter.-*.htmspringmvc实现上传文件代码片段@[email protected]("/common")publicclassCommonController{@RequestMapping(value="/upload")[email protected](@RequestParam("file")MultipartFilefile,HttpSessionsession)throwsException{FilelocalFile=newFile("c:/test/a.rar");file.transferTo(localFile);return"success";}}
❹ SpringMVC框架搭建的几个核心配置
SpringMVC几个核心类
控制器核心类
org.springframework.web.servlet.DispatcherServlet - 配置web.xml
加载配置文件核心类,
org.springframework.web.context.ContextLoaderListener – spring的配置文件
处理url影射核心类,
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping-根据bean的名称请求一个bean. spring的配置文件- /abc
处理视图资源核心类,
org.springframework.web.servlet.view.ResourceBundleViewResolverreturn hello – 决定返回的字符串由哪一个页面来显示。<context:component-scan package=“cn.hncu”/>用于替代上面的类。
方法动态调用核心类)
org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver
图解
❺ Springmvc为什么要配置两个配置文件
springmvc呢,光从名字就知道,最少有spring的配置,mvc的配置.mvc是model:view:controller的综合.大概就是,启动项目,spring把model,view,controller,serivce,这些东西扫描到.然后给每个都创建一个实例,加到一个缓存里.哪里业务调用了,就把自己创建的实例传给他们.配置文件有几个都行,没有都行.关键你要了解,配置文件,就是用来帮助项目去运行的,他想要把自己运行起来,他必须知道,到底哪些类需要创建对象,哪些不需要,他到底要管理谁,你不写配置文件,spring没那么智能,他也不知道.所以配置文件的本质,就是把spring啊,spingmvc,或者spingboot这些框架给初始化了.大部分的配置不用你写文件声明,都有默认值,你不配置,框架就按默认值初始化自己,但如果你配置了,他就按你配置的初始化.所以你这个问题,我很难回答为什么是两个,因为不一定是两个,你要合并配置文件后,可能就一个,你要特定情况,连配置文件都没有,全注解就运行了.所以没办法回答你.如果非要回答,说个官方点的:不一定几个配置文件,大多数是用来声明spring容器要管理的事哪些类.以及要不要开启事务.要不要使用持久层框架,如果使用,使用哪种.类似这种的配置.具体的,每个项目都不一样.虽然大同小异,但还是有很多差别.当初我学的时候,我的做法是,先拿一个老项目,如果自己手里没有,就github上随便找个老项目,springmvc的,拿过来他的配置文件,挨个查标签含义.了解最快了,顺便连运行逻辑都看明白了.
❻ spring3 mvc需要哪些配置文件
直接将spring mvc 配置文件配置在WEB.XML文件中,当服务器启动的时候自动就将spring 加入容器中 ,
❼ 如何在spring-servlet.xml 中引入别的springmvc配置文件
你就直接创建多个这样的XXX-servlet.xmlweb.xml中这样配置Java code?<servlet><servlet-name>dmt</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/springweb/*-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dmt</servlet-name><url-pattern>*.do</url-pattern> <!–匹配跳转的后缀名–></servlet-mapping>
❽ 面试 springmvc配置文件怎么配置
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0)1. jar包引入Spring 2.5.6:spring.jar、spring-webmvc.jar、commons-logging.jar、cglib-nodep-2.1_3.jarHibernate 3.6.8:hibernate3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、antlr-2.7.6.jar、commons-collections-3.1、dom4j-1.6.1.jar、javassist-3.12.0.GA.jar、jta-1.1.jar、slf4j-api-1.6.1.jar、slf4j-nop-1.6.4.jar、相应数据库的驱动jar包 SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理以后再返回相应的视图(View)和模型(Model),返回的视图和模型都可以不指定,即可以只返回Model或只返回View或都不返回。DispatcherServlet是继承自HttpServlet的,既然SpringMVC是基于DispatcherServlet的,那么我们先来配置一下DispatcherServlet,好让它能够管理我们希望它管理的内容。HttpServlet是在web.xml文件中声明的。<!– Spring MVC配置 –><!– ====================================== –><servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!– 可以自定义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>1</load-on-startup></servlet><servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern></servlet-mapping><!– Spring配置 –><!– ====================================== –><listener> <listenerclass> org.springframework.web.context.ContextLoaderListener </listener-class></listener><!– 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 –><context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:config/applicationContext.xml</param-value></context-param>spring-servlet.xml配置spring-servlet这个名字是因为上面web.xml中<servlet-name>标签配的值为spring(<servlet-name>spring</servlet-name>),再加上“-servlet”后缀而形成的spring-servlet.xml文件名,如果改为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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context <a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd">http://www.springframework.org/schema/context/spring-context-3.0.xsd</a>"> <!– 启用spring mvc 注解 –> <context:annotation-config /> <!– 设置使用注解的类所在的jar包 –> <context:component-scan base-package="controller"></context:component-scan> <!– 完成请求和注解POJO的映射 –> <bean class="org.springframework.web.servlet.mvc.annotation." /> <!– 对转向页面的路径解析。prefix:前缀, suffix:后缀 –> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/" p:suffix=".jsp" /></beans>DispatcherServlet会利用一些特殊的bean来处理Request请求和生成相应的视图返回。关于视图的返回,Controller只负责传回来一个值,然后到底返回的是什么视图,是由视图解析器控制的,在jsp中常用的视图解析器是InternalResourceViewResovler,它会要求一个前缀和一个后缀在上述视图解析器中,如果Controller返回的是blog/index,那么通过视图解析器解析之后的视图就是/jsp/blog/index.jsp。
❾ springmvc怎么读取配置文件
1、在spring-mybatis配置文件中引入配置文件,代码如下:[html] view plain <span style="font-family:Comic Sans MS;"> <!– 引入配置文件 –> <bean id="prpertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:jdbc.properties</value> </list> </property> </bean></span> 2、为了让controller读取到配置文件,仍需要在spring.xml文件中引入配置文件[html] view plain <span style="font-family:Comic Sans MS;"><context:property-placeholder location="classpath:jdbc.properties" /></span>
❿ Spring MVC 配置文件讲解
使用@Controller定义一个控制器 使用@RequestMapping映射请求 使用@RequestParam绑定请求参数到方法参数 使用@ModelAttribute提供一个从模型到数据的链接 使用@SessionAttributes指定存储在会话中的属性<context:annotation-config/>他的作用是隐式地向 Spring 容器注册、、、 这 4 个BeanPostProcessor。例如:如果想使用@ Resource 、@ PostConstruct、@ PreDestroy等注解就必须声明。如果想使用@PersistenceContext注解,就必须声明的Bean。如果你想使用@Autowired注解,那么就必须事先在 Spring 容器中声明 Bean。传统声明方式如下:<bean class="org.springframework.beans.factory.annotation. "/> 如果想使用 @Required的注解,就必须声明的Bean。同样,传统的声明方式如下:<bean class="org.springframework.beans.factory.annotation."/> 记得,使用注解一般都会配置扫描包路径选项<context:component-scan base-package=”XX.XX”/> <servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>这个配置常常见于web.xml文件中<load-on-startup>1</load-on-startup>是启动顺序,让这个Servlet随Servletp容器一起启动。 <url-pattern>*.do</url-pattern> 会拦截*.do结尾的请求。<servlet-name>dispatcherServlet</servlet-name>这个Servlet的名字是dispatcherServlet,可以有多个DispatcherServlet,是通过名字来区分的。每一个DispatcherServlet有自己的WebApplicationContext上下文对象。同时保存的ServletContext中和Request对象中,关于key,以后说明。 在DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[dispatcherServlet]-servlet.xml 的配置文件,生成文件中定义的bean。<init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value></init-param>指明了配置文件的文件名,不使用默认配置文件名,而使用springMVC.xml配置文件。其中<param-value>**.xml</param-value> 这里可以使用多种写法1、不写,使用默认值:/WEB-INF/<servlet-name>-servlet.xml2、<param-value>/WEB-INF/classes/springMVC.xml</param-value>3、<param-value>classpath*:springMVC-mvc.xml</param-value>4、多个值用逗号分隔springMVC-mvc.xml 配置文件片段讲解<context:annotation-config/><!– 自动扫描的包名 –> <context:component-scan base-package="com.iflysse"/> <!– 默认的注解映射的支持 –> <mvc:annotation-driven/><!– 视图解释类 –> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/><!–可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 –> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> </bean> <mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。<mvc:annotation-driven /> 会自动注册与 两个bean,是spring MVC为@Controllers分发请求所必须的。并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。后面,我们处理响应ajax请求时,就使用到了对json的支持。后面,对action写JUnit单元测试时,要从spring IOC容器中取与 两个bean,来完成测试,取的时候要知道是<mvc:annotation-driven />这一句注册的这两个bean。<!– json 支持 –><bean id=""class="org.springframework.http.converter.json."><property name="objectMapper" ref="commonObjectMapper"/><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!– ObjectMapper json转换 –><bean id="commonObjectMapper" class="cn.com.starit.util.CommonObjectMapper"/>