spring+springmvc+mybitis框架搭建
框架搭建,创建web工程----引入夹包-----引入配置文件----ok
1:引用夹包。看下面的pom.xml文件。里面有需要引用的夹包
2:配置配置文件,web.xml,applicationContext.xml,springmvc-servlet.xml的配置文件
注意的地方:
三个文件的放置问题:web.xml不用说就是在那里,其他的两个文件要放在哪里,要在web.xml里面配置 。
如果springmvc-servlet.xml文件不在里面配置的话要放在WEB-INF下,因为程序默认到那里找这个文件,如果配置就去配置的路径找
在我们进行 spring-servlet 进行开发的时候,经常会遇到配置文件配置的问题,要彻底的解决这个问题,我们需要了解 springMVC 设计的基本架构
1.SpringMVC 的配置分为两部分 application.xml 和 spring-servlet.xml
2.两个配置文件的作用和配置位置
2.1.application.xml :对应的是系统级别的配置,作用范围是系统上下文。
2.2.spring-servlet.xml:对应的是 controller 级别的配置,作用范围是控制层上下文。
3.它们在web.xml 中的配置
3.1.因为 application.xml 是系统级别的上下文,所以它的初始化需要放到 web.xml 中的<context-param>标签中,同时其他的类似定时任务的配置文件等等都是放在这个标签下进行初始化的。
3.2.因为spring-servlet.xml只是 controller 级别的上下文,说白了就是 servlet 级别的初始化,它不涉及到除了转发之外的任何实体,所以它的作用范围仅仅限制在 servlet 级别,所以它的初始化应该是跟spring 的 DispatcherServlet 初始化在一起,所以就是在 <servlet> 表情中初始化的。它有一个默认值就是【/WEB-INF/remoting-servlet.xml 】,注意配置文件的对应的名称是【 servlet-name】-servlet.xml,所以如果你没有给servlet 制定配置文件的位置,并且在默认位置下也没有配置文件,那么系统启动的时候就会报错。
注意:对于 servlet配置文件里面应该初始化的东西,除了视图的解析方式、静态资源文件的存放位置、controller的初始化方式之外,其他的都不应该放在 servlet 配置文件中,应为它只负责 请求的转发,返回结果的解析以及静态资源文件的解析,其他的对象的初始化,定时任务...都不应该放到这个配置文件下进行管理。
三个文件的配置如下(web.xml文件中其他两个文件位置需改动其他不用改):
=====web.xml开始==========
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>autopart</display-name>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<listener>
<description>创建spring容器</description>
<display-name>spring</display-name>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<description>spring按照此参数读取配置文件</description>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/自定义文件夹/applicationContext.xml</param-value>
</context-param>
<filter>
<description>解决web项目中的乱码问题</description>
<filter-name>ecodeFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ecodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<description>springmvc前端控制器</description>
<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-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
=====web.xml结束==========
=====applicationContext.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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<!--默认扫描这个包里面所有东西-->
<context:component-scan base-package="com.autopart.module"></context:component-scan>
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/autopart?characterEncoding\=utf-8"></property>
<property name="password" value="root"></property>
<property name="username" value="root"></property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath*:com/autopart/module/**/*Mapper.xml"></property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.autopart.module"></property>
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
<!--配置事务 -->
<bean id="dm" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven transaction-manager="dm"/>
</beans>
=====applicationContext.xml结束==========
=====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:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 简化配置
1:自动注册DefaultAnnotationHandlerMapping,AnnotationNethodHandlerAdpter
作用:基于注解的url映射和方法的适配
2:提供一系列的:数据绑定,数字和日期的format,@numberformat,@datatimeforma等注解的支持
xml,json的默认读写支持
这里解决了问题:@rosponsbody注解返回jsp页面时list的json格式转化,树形菜单的形成
-->
<mvc:annotation-driven />
<!-- 扫描Handler -->
<context:component-scan base-package="com.autopart.module.*.controller"/>
<!-- 视图解析器,其实就是作逻辑视图与视图的映射 jsp路径 = prefix + handler返回字符 + suffix -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
=====springmvc-servlet.xml结束==========
配置完成后,还要引入夹包,应该是先引入夹包在做配置文件,夹包引入配置如下
============夹包的引入================
1.需要哪些夹包,看下面配置,
其实夹包需要如下几类
1:spring的夹包
spring的核心夹包,
spring DAO层
spring web
spring test
2:持久化需要的夹包
mybitis的夹包--dao层的依赖
mybitis-spring依赖
3:数据库的依赖夹包
数据库夹包
链接池的夹包
4:servlet-web的依赖夹包
==============pom.xml配置开始=====================
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- spring 需要的夹包-->
<!-- spring核心 -->
<dependency>
<!--spring的核心工具包 -->
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<!-- SpringIoC(依赖注入)的基础实现 -->
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<!-- Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等. -->
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<!-- spring DAO层 -->
<dependency>
<!-- 对jsbc数据访问封装的一些类 -->
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<!-- 为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理 -->
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<!-- spring-web相关的依赖 -->
<dependency>
<!-- 这个jar 文件包含Web 应用开发时,用到Spring 框架时所需的核心类,包括自动载入Web Application Context 特性的类、Struts 与JSF 集成类、文件上传的支持类、Filter 类和大量工具辅助类 -->
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<!-- 含Spring MVC 框架相关的所有类 -->
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<!-- spring test -->
<dependency>
<!-- 对Junit等测试框架的简单封装 -->
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<!-- servlet-web前端需要的夹包 -->
<dependency>
<!-- 前端开发需要的标签库,taglib标签-->
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<!-- jstl标签 -->
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<!-- json解析工具包 -->
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<!-- 加载了servlet容器运行和启动等等需要的一些类和接口 -->
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<!-- jsp页面里的标签的使用 -->
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<!-- 持久化框架依赖,这里用的mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<!--mybatis-spring整合包,这样就可以通过spring配置bean的方式进行mybatis配置了,
不然需要单独使用mybatis的配置-->
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 数据库 -->
<dependency>
<!-- mysql数据库连接需要的包和接口 -->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
<scope>runtime</scope><!-- maven的工作范围 -->
</dependency>
<dependency>
<!-- 数据库连接池需要的包和一些接口 -->
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<!-- 数据库连接池dbcp依赖的夹包 -->
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.5.6</version>
</dependency>
==============pom.xml结束===================
我的做法是新建一个maven项目,在pom.xml中配置一下,那项目中就会引入需要的夹包
把所有需要的夹包根据路径找到复制,直接放在新建的项目的lib里
配置完成后跑起项目,测试路径:http://localhost:8080/blind/ ; ------blind为项目名
这样项目会自动跑web.xml文件中 <welcome-file>标签内配置的页面,这个页面新创建的web工程里一般没有,要自己加一个,在工程的WebContent文件夹下,创建一个就行
如果没问题基本的架子就搭起来了