在经过了长期的spring+struts+hibernate框架与spring+springmvc+mybatis框架的竞争之后,spring+springmvc+mybatis框架(下面统一简称为ssm框架)渐渐的得到了大家的认可,并且渐渐的成为了java web开发的主流框架。
小沃曾经有一段时间特别依赖myeclipse,因为他集成了ssm框架,搭建难度比使用eclipse低很多。但是小沃在研发过程中,渐渐的发现使用myeclipse的一些问题,如jar包版本老,配置并不灵活,myeclipse本身收费,企业使用会有版权风险等问题。考虑到这些,也为了后期的案子我们能有更加灵活的开发空间,小沃开始尝试使用eclipse搭建ssm框架。
下面,小沃就来介绍一下这几天的研究成果,如何通过eclipse搭建ssm框架 。
一、建立相关的工程
这里我们使用eclipse建立Dynamic Web Project,也就是动态web工程,因为java web属于动态web。
二、下载相关的jar文件。
这里需要利用到上一节课我们用到的知识点,使用gradle下载jar文件,具体方法请看上一篇文章。
1.建立gradle.build文件
文件内容如下:
apply plugin: 'java' repositories { mavenCentral() } dependencies { compile "org.springframework:spring-webmvc:+" compile "org.springframework:spring-jdbc:+" compile "mysql:mysql-connector-java:8.0.7-dmr" compile "org.mybatis:mybatis:+" compile "org.mybatis:mybatis-spring:+" compile "taglibs:standard:+" compile "jstl:jstl:+" compile "org.apache.tomcat:tomcat-jdbc:+" } task copyJars(type: Copy) { from configurations.runtime into 'dist' }
稍微给大家解释一下:
spring-webmvc.jar是spring-mvc的基础jar文件。
spring-jdbc.jar是spring的数据库基础文件,只有有了它才能使用spring的方法操作jdbc。
mysql-connector-java.jar是java操作mysql的驱动程序,只有有了它才能通过java的jdbc访问mysql。
mybatis.jar是mybatis的基础类。
mybatis-spring.jar是mybatis对spring的支持类。
standard.jar与jstl.jar是jsp所使用的模板标签支持类。
tomcat-jdbc.jar是tomcat的数据库连接池类。
当我们运行gradle copyJars后,会下载下来几十个jar文件,其中不少是spring的相关依赖文件,依赖文件的下载交给gradle去完成吧。
三、导入jar文件
将我们下载好的jar文件全部拖入/WebContent/WEB-INF/lib/下的文件夹中,这样就自动导入完成了。
四、编辑web.xml文件
打开/WebContent/WEB-INF/web.xml,在最下面追加如下内容:
<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置Spring mvc下的配置文件的位置和名称 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.shtml</url-pattern> </servlet-mapping>
其中servlet-name可以任意修改,但是两个servlet-name必须一致。
/WEB-INF/spring-mvc.xml是其spring-mvc的配置文件,可以修改,只要路径一致即可。
*.shtml是指定过滤器,伪静态的后缀名。
五、编写spring-mvc.xml文件
打开/WebContent/WEB-INF/web.xml,输入如下内容:
<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:mvc="http://www.springframework.org/schema/mvc" 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-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <context:component-scan base-package="com.jevian.controller" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name = "prefix" value="/WEB-INF/views/show.jsp"></property> <property name = "suffix" value = ".jsp"></property> </bean> <!-- MyBatis配置 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="/WEB-INF/mapper.xml" /> </bean> <!-- 扫描basePackage接口 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 映射器接口文件的包路径, --> <property name="basePackage" value="com.jevian.dao" /> </bean> <!-- 数据源配置, 使用Tomcat JDBC连接池 --> <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"> <!-- Connection Info --> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/elecmanager?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true&serverTimezone=GMT" /> <property name="username" value="root" /> <property name="password" value="root" /> <!-- Connection Pooling Info --> <property name="maxActive" value="190" /> <property name="maxIdle" value="20" /> <property name="minIdle" value="0" /> <property name="defaultAutoCommit" value="false" /> </bean> </beans>
其中<context:component-scan base-package="com.jevian.controller" />是指定springmvc的路由所使用包名。
<property name = "prefix" value="/WEB-INF/views/"></property>与<property name = "suffix" value = ".jsp"></property>是用于组合成jsp文件路径的语句,可以在这里指定jsp文件的存放路径。
<property name="mapperLocations" value="/WEB-INF/mapper.xml" />是用于指定mybatis中,用于定于sql语句的xml文件。
<property name="basePackage" value="com.jevian.dao" />是用于指定能够访问mybatis数据库的包名。
剩下的是用于定义jdbc连接池的一些参数。
六、编写mapper.xml文件
打开/WEB-INF/mapper.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.jevian.dao.Dao"> <select id="ShowUser" resultType="int"> select count(*) from `user` where `ID`=1 </select> </mapper>
这里只是一个例子,定义一个mapper用于执行select语言。
七、写对应controller文件。
新建一个class,包名定义为com.jevian.controller,可修改,但是必须与xml中定义的一致。
然后写入如下内容:
package com.jevian.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class IndexController { @RequestMapping("hello") public String hello(Model model) { return "show"; } }
上述代码会将一个hello.shtml路由到这里,然后显示/WEB-INF/views/show.jsp的内容并返回给前端web页面。
八、写对应dao文件
新建一个interface,包名填写com.jevian.dao,可修改,但是必须与xml中定义的一致。
然后写入如下内容:
package com.jevian.dao; import org.springframework.stereotype.Repository; @Repository public interface Dao { public int ShowUser(); }
其中ShowUser就是mybatis定义的mapping的id。
至此,java web的ssm框架就搭建成功了。