先说明一下,这里大部分都是一步一步的做法和代码,没有解释,有时间我再添加解释,大家先将就看一下!谢谢
1 开始
我用的是Eclipse 4.8.0 版本 ,首先,先来一张项目的目录结构(注意,这里只是演示,所以并不是标准的mvc 重在原理 )
请看图:
1 目录结构
好了,下面我们开始进行框架整合 首先第一步就是先创建一个动态web工程,这里就不再赘述。
2 创建目录及导入jar包
2.1 创建config文件夹
在项目的src文件夹上右键 --> new -->source folder 创建一个资源文件夹 名称任意,我这里是config
然后就会出现一个与src在同一目录的文件夹 config
2.2 创建lib和page文件夹及导入jar包
2.2.1 创建文件夹
在WebContent下面的WEB-INF 文件夹下面默认会有一个lib文件夹,若没有则手动创建一个。并且创建一个名为page的文件夹(后面会说这个page文件夹的作用)
如图所示:
可能有的版本在WEB-INF下默认有一个web.xml文件,先不用理他
2.2.2导入jar包
这一步非常重要,我们要导入我们所需要的jar包 这里面的jar包包括四部分:
1.spring的jar包及spring的依赖包
2.springmvc的jar包及springmvc的依赖包
3.mybaties的jar包及mybaties的依赖包
4.mybaties与spring的整合包和数据库驱动包(我这里演示的是mysql)
我们要把我们所用到的所有的包都放在WEB-NIF下的lib文件夹里,效果是这样的:
请大家根据个人需要导入jar包(用不到的包可以不导)
2.2.3 将jar包添加到buildPath
选中lib下的所有jar包 右键 --> build path --> add to build path
添加成功后我们会看到项目中的referenced libraries 中就会出现我们导入的所有jar包
到此为止,我们的目录结构暂时搭建完毕(src目录结构因个人喜好不同,这里没有说明)
3 编写配置文件:
3.1 applicationContext.xml spring配置文件
(注意,这里的配置文件名除了log4j之外其余均没有要求)
在config文件夹下新建一个xml文件,取名为capplicationContext.xml
这里是applicationContext.xml文件内容,我已经注释好了 如果看不懂可以留言!
<?xml version="1.0" encoding="UTF-8"?>
<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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
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.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
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<!-- 加载数据库配置文件 -->
<context:property-placeholder location="classpath:db.properties" />
<!-- 配置给mybaties用的数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 配置sqlsession工厂 -->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 工厂配置文件 -->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
</bean>
<!-- 配置扫描mybaties动态代理 mapper -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xiaobai.mapper"/>
</bean>
</beans>
3.2配置数据库配置文件 db.properties
在config文件夹下新建一个properties文件,取名为db.properties
这里是db.properties文件内容,我已经注释好了 如果看不懂可以留言!
# driver name
jdbc.driver=com.mysql.jdbc.Driver
#driver url
jdbc.url=jdbc:mysql://localhost:3306/spring?characterEncoding=utf-8
#database's username
jdbc.username=root
#database's password
jdbc.password=root
3.3配置log4j配置文件log4j.properties
在config文件夹下新建一个properties文件,取名为log4j.properties
注意!!这里的文件名不能改,否则不能识别 (其实我也没试过,听别人说的 哈哈),如果不需要日志,则不用配置这个文件
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
3.4配置springmvc配置文件
在config文件夹下新建一个xml文件,取名为springmvc.xml
这里是springmvc.xml文件内容,我已经注释好了 如果看不懂可以留言!
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" 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 ">
<!-- 配置一下包扫描路径 -->
<context:component-scan base-package="com.xiaobai"/>
<!-- 配置返回视图 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
3.5配置sqlmapconfig.xml
在config文件夹下新建一个xml文件,取名为sqlmapconfig.xml
这里是springmvc.xml文件内容,我已经注释好了 如果看不懂可以留言!
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 设置别名 -->
<typeAliases>
<!-- 2. 指定扫描包,会把包内所有的类都设置别名,别名的名称就是类名,大小写不敏感 -->
<package name="com.xiaobai.pojo" />
</typeAliases>
<!-- 配置mapper地址 自动扫描包 -->
<mappers>
<package name="com.xiaobai.mapper"/>
</mappers>
</configuration>
好了,到此为止,除了web.xml文件没有配置之外,其余的配置文件全部配置好了(配置文件中文件的互相读取以及包的扫描都涉及名称问题,一定要参照好了,不然就会出现找不到文件等异常)
这里先来一张config文件夹下文件的截图 应该是5个
请大家注意,配置文件并不是只能放在这里,集中放在这里是为了好维护,大家要做到无论配置文件放到哪里,都可以在程序中写对配置文件的路径地址!
4.在src目录下创建相应的包和类以及接口
解释一下:
com.xiaobai.action 下放置的是controller
com.xiaobai.pojo 下放置的是pojo类(就是和数据库表对应的java类)
com.xiaobai.mapper 下放置的是数据查询的接口(这里用的是mybaties动态代理模式)
接下来我把每一个类的代码贴下来: (数据库的表放在最后)
4.1 com.xiaobai.action-->MessageController.java(类)
package com.xiaobai.action;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.xiaobai.mapper.UserMapper;
import com.xiaobai.pojo.User;
@Controller
public class MessageController {
@Autowired
UserMapper um;
@RequestMapping(value="/test.action")
public String test(Model model) {
System.out.println("ok you are successful");
User u = um.selectUserById(22);
model.addAttribute("user", u);
return "success";
}
}
这个类只写了一个业务,当访问test.action时 调用test方法 控制台输出ok you are successful 并且查询id为22的user 返回给page下面的success.jsp
4.2.1com.xiaobai.mapper -->UserMapper.java (接口)
package com.xiaobai.mapper;
import com.xiaobai.pojo.User;
public interface UserMapper {
public User selectUserById(Integer id);
}
接口提供一个方法 根据id查询user 并返回
4.2.2com.xiaobai.mapper -->UserMapper.xml (配置文件)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiaobai.mapper.UserMapper">
<select id="selectUserById" resultType="com.xiaobai.pojo.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
注意,这个文件的名字必须和接口的名字相同,而且必须放在同一包下,否则mybaties无法找到
4.3com.xiaobai.pojo-->user.java(类)
package com.xiaobai.pojo;
public class User {
private String username;
private int id;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
好了,到这里,我们所有的类都写好了,接下来我们还有两个jsp文件用来显示:
5.WebContent下创建index.jsp page下创建success.jsp
5.1index.jsp
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<a href = "${ pageContext.request.contextPath}/test.action">点击测试</a>
</body>
</html>
内容很简单 设置一个指向test.action的链接
5.2 success.jsp
请注意,这个文件是在page文件夹下,不要放错地方!!
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h1>Success</h1>
<table border="1">
<tr>
<td>id</td><td>${ user.id }</td>
</tr>
<tr><td>username</td> <td>${ user.username }</td> </tr>
</table>
</body>
</html>
到这里,我们把所有的类和jsp写好了,最后一步!配置项目启动,就可以了!
6.配置web.xml
在WEB-INF下会有一个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>MessageBord</display-name>
<!-- 主页列表 -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 配置上下文参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 配置自动扫描applicationContext.xml -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置编码过滤器 UTF-8 -->
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置核心servlet -->
<servlet>
<servlet-name>mainServlet</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>mainServlet</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
好的,大功告成,我们完成了所有配置,这时我们要做的就是检查自己的项目,确定没有问题后,启动他!
在项目上右键 --> run as --> run on server
页面会有很多log4j的输出并且你可以看到下面这个页面,恭喜你,成功了一半!
我们点击测试链接,如果成功跳转:
好了,到此,我们的框架整合成功,完美运行!!(写的不好,没怎么解释,有时间再改!!)