您的位置:首页 > 其它

maven搭建ssm笔记

2017-08-20 00:00 85 查看
一:使用的maven是3.5 是目前最新的 这个版本 必须配合jdk1.8才能使用 ,1.6无法使用 因为 maven支持导入springmvc,spring,mybatis,却无法导入oracle jdbc驱动程序,需要在本地oracle的按装目录里找到jdbc(寻找方法 直接在文件中搜索jdbc就能找到),这套代码 使用的jdbc14。

使用maven 首先需要 下载 ,完成之后 在eclipse的maven中配置 install选项里面配置setting,提醒maven是面安装的,同时maven需要配置环境变量 而且以来java-home这个环境变量,应为maven以来jdk,配置环境变量是为了在任何地方都可以使用maven。安装好maven还需要配置本地仓库,在setting.xml里面进行配置,里面有个localstorage 里面指定的目录文件就会成为本地仓库,所有maven使用的jar包都会下载到本地仓库里面。

由于maven不支持oracle的jdbc驱动所以我们有两种方法来解决:

第一种 直接使用buildpath来引入jdbc驱动包,第二中需要将jdbc驱动包 加入到本地仓库中 ,再使用maven的pom.xml文件想其他jar包一样进行引入。第一种简单 省略,第二种 首先需要配置环境变量 并且测试成功,在使用
mvn install:install-file -Dfile=C:\ojdbc14.jar -DgroupId=com.oracle.jdbc14 -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar 这个格式直接进入dos界面运行即可 如果出现build success 字样 则表示添加成功,否则添加失败。注意点 哲理的dfile 等号后面没有任何符号直接是路径,网上面的坑 我就不想说了,把我坑惨了。然后再根据后面对应数据进行 dependence进行引用。

maven目录结构 src/main/java,src/main/resource src/test/java,src/test/resource,在创建的时候可能会出现没有src/test目录这是正常现象可以手动创建。使用classpath:。。。 直接访问的是main/java和src/main/resource下面的路径也就是各种包名+类名。如果放在test下面则无法使用classpath:来获取配置文件,亲测

一般是将springmvc.xml application.xml mybatis.config.xml 放在resource目录下 至于是main还是test 都可以,效果一样 。

第一重点 :application容器是父上下文,springmvc容器是子上下文容器,父上下文容器无法访问子上下文容器,而子类则可以访问父上下文容器,但并不意味子类可以直接引用父上下文的bean 这是不行的。

在web。xml中可以不写application和监听器, 监听器也是服务于application容器。可以将所有的配置都写在springmvc容器中。具体区别如下。

方案一,传统型:

父上下文容器中保存数据源、服务层、DAO层、事务的Bean。

子上下文容器中保存Mvc相关的Action的Bean.

事务控制在服务层。

由于父上下文容器不能访问子上下文容器中内容,事务的Bean在父上下文容器中,无法访问子上下文容器中内容,就无法对子上下文容器中Action进行AOP(事务)。

当然,做为“传统型”方案,也没有必要这要做。

方案二,激进型:

Java世界的“面向接口编程”的思想是正确的,但在增删改查为主业务的系统里,Dao层接口,Dao层实现类,Service层接口,Service层实现类,Action父类,Action。再加上众多的O(vo\po\bo)和jsp页面。写一个小功能 7、8个类就写出来了。 开发者说我就是想接点私活儿,和PHP,ASP抢抢饭碗,但我又是Java程序员。最好的结果是大项目能做好,小项目能做快。所以“激进型”方案就出现了-----没有接口、没有Service层、还可以没有众多的O(vo\po\bo)。那没有Service层事务控制在哪一层?只好上升的Action层。

本文不想说这是不是正确的思想,我想说的是Spring不会限制你这样做。

由于有了父子上下文,你将无法实现这一目标。解决方案是只使用子上下文容器,不要父上下文容器 。所以数据源、服务层、DAO层、事务的Bean、Action的Bean都放在子上下文容器中。就可以实现了,事务(注解事务)就正常工作了。这样才够激进。

总结:不使用listener监听器来加载spring的配置文件,只使用DispatcherServlet来加载spring的配置,不要父子上下文,只使用一个DispatcherServlet,事情就简单了,什么麻烦事儿也没有了。

web。xml中的路径都是基于wepcontent或者webapp发布目录 还有一个重点就是 WEB-INF需要大写 不然无法找到其下面的其他文件。xml文件严格区分大小写。

第二重点:在ssm中web。xml,application.xml,springmvc.xml 如果匹配的classpath路径 都是路劲前家classpath:并且是以com.com.com的形式指定报名,而如果文件在webapp下面则是以xx/xx/的形式出现,默认从webapp下面开始搜索,并且严格区分文件大小写,切记。至于第一个xx前带不带/随便。

第三个重点:<context:component-scan base-package="xx.xx.xx">内容都是带有注解的类的包名

第四重点 jdbc连接oracle:jdbc:oracle:thin:@192.168.1.105:1521:root中的jdbc,oracle等都必须小写,大写会包no jdbc driver 通常这个错误要么是没有jdbc驱动 要么是 url错误。 username是plsql用户名,password是它的密码,而 root则是它的数据库。

第五个重点:dao层使用的是接口 没有注解 ,通常使用的@repostroy是给dao层的类注解的但是不用。mapping.xml直接针对接口的每个方法进行编写sql语句,执行sql语句,获取数据。

第五个重点: internalresourceviewresoler中的jstlview 使用来规定 jsp中必须使用jstl标签 ,是必须使用。

第六个重点:mybatis.config.xml,mapping.xml,mappdao接口,entity javabean(可以交由容器控制也已不交 mapping。xml可以在mybatis。xml中引用也可以在容器中引用 两个容器都可以),而控制层和业务逻辑层由于有注解,所以直接使用component-scann 来交由容器控制。

第七个重点:sql语句如果 表的字段和实体类的属性名不一致可以使用as 改正 就避免使用resultmap减少代码。

第八个重点:ssm+jsp 不但需要导入ssm,jdbc需要的jar包还需要导入jstl标签库项目的jar包,而且maven默认的web项目是2.3,我用3.5目前最新的maven创建的也是2.5的项目 ,而 el表达式在web项目2.5以前是被忽略不变异的------使用的时候也面直线式¥{} 格式的数据 ,所以需要进行如下处理

1.在jsp页面加上<%@ page isELEnabled ="false"%> 或者<%@ page isELIgnored="false" %>后者测试可以前者没测网上的

2.在web。xml中修改版本 将所有的2.3都改成2.5,

3.网上有 就不写了 知道两种可以了

第九:items="${}" 1.要使用 el表达式来获取数据 2. 引号里面不能有空格,否则会无法获取数据。

springmvc可以使用 modelandview或者modelmap来传递数据 前者可以在构造器里面就穿好数据,也可以创建好后在添加 ,可以穿list集合 也可以穿map集合 后者需要使用 return string来跳转jsp因为他没有modelandview功能 他只能传数据 但是也是使用request来获取

下面是代码模块:

spring容器:

<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
</beans>

springmvc容器:

<?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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 开启spring mvc注解 -->
<mvc:annotation-driven></mvc:annotation-driven>
<mvc:resources mapping="/js/**" location="/js/" />

<!-- 设置使用注解的类所在的jar包 -->
<context:component-scan base-package="com.maven.controller"></context:component-scan>

<context:component-scan base-package="com.maven.servlces"></context:component-scan>
<!-- 设置使用注解的类所在的jar包 -->

<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
<context:property-placeholder location="classpath:property.properties"/>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />

</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<!--数据库连接的url -->
<property name="url" value="${url}" />
<!--用户名 -->
<property name="username" value="${username}" />
<!--密码 -->
<property name="password" value="${password}" />
<!--初始化连接大小
<property name="initialSize" value="${initialSize}" />

<property name="maxActive" value="${maxActive}" />

<property name="maxIdle" value="${maxIdle}" />

<property name="minIdle" value="${minIdle}" />

<property name="maxWait" value="${maxWait}" />
-->
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据库连接池<property name="mapperLocations" value="com.maven.mapping"></property> -->
<property name="dataSource" ref="dataSource" />
<!-- 加载mybatis的全局配置文件 -->
<property name="configLocation" value="classpath:mybatis-config.xml" />
<property name="typeAliasesPackage" value="com.maven.entity"></property>
<property name="mapperLocations" value="WEB-INF/mapping/*.xml"></property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<property name="basePackage" value="com.maven.dao" />
</bean>

</beans>

properties。xml:

url=jdbc:oracle:thin:@192.168.1.105:1521:root
username=scott
password=oracle1234
driver=oracle.jdbc.driver.OracleDriver

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>
<display-name>Archetype Created Web Application</display-name>

<welcome-file-list>
<welcome-file>mainnu.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- ContextLoaderListener初始化Spring上下文时需要使用到的contextConfigLocation参数 -->
<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>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

纯属个人笔记 :不喜勿喷
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ssm框架整合