本案例主要做一个简单的SSM搭建,完成根据ID查询部门表中信息并在浏览器中显示。使用Idea2015+jdk1.8+oracle11g,在这个项目中,会使用使用Mavn-MyBatis逆向工程插件,反向生成代码(即通过数据库表生成DAO接口,Mapper.xml SQL映射文件,Pojo类)。
1.使用Idea工具搭建一个Maven项目完成pom.xml配置
打开Idea工具,选择菜单File-->New -->Project 进入项目创建页面,选择Maven项目,Project SDK选择自己安装的Jdk版本,我这里是1.8,勾选工具自带的Maven模版(Create from archetype),当然也可以自己添加(Add Archetype).选择webapp模板,我们这里要创建web项目。
设置GroupId:项目组织唯一的标识符,一般设置格式为: 域名.公司
ArtifactId:项目的唯一的标识符,一般是项目名称
Version:版本号,一般不改,使用默认即可。
设置完毕后,点击下一步,进入Maven配置,如果设置了Maven配置,则直接下一步,不用变更。
下一步,设置项目名称,和上面项目唯一标识保持一致,当然你也可以改为其他的。
然后点击Finish,设置完成,接下来就是Maven项目初始化的问题了,这里需要网络,当然项目构建会有点慢(下载一些必须的东西),需要等待一下,如果出现以下这个提示,则点击一下,那个都可以,我一般是点击Enable Auto-Import(开启自动导入)
初始化构建完成。在main文件夹下新建一个java文件夹,并设置为源码文件夹,在src文件夹下新建一个test文件夹,在test文件下新家一个java文件夹,并设置为测试源码文件夹,
2.配置SSM项目需要的jar包,在pom.xml配置文件中完成
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zt</groupId>
<artifactId>SSMDemo</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>SSMDemo Maven Webapp</name>
<!--jar下载仓库-->
<url>http://maven.apache.org</url>
<!--版本信息共有提取版本号,便于后期项目版本提升,查找麻烦,这里的标签名称随意命名-->
<properties>
<spring.version>5.0.4.RELEASE</spring.version>
<aspectJ.version>1.8.13</aspectJ.version>
<mybatis.version>3.4.6</mybatis.version>
<mybatis.spring.version>1.3.2</mybatis.spring.version>
<oracle.version>11.2.0.1.0</oracle.version>
<log4j.version>1.2.17</log4j.version>
<c3p0.version>0.9.5.2</c3p0.version>
<servlet.version>3.1.0</servlet.version>
<jstl.version>1.2.5</jstl.version>
<jackson.version>2.9.4</jackson.version>
<commons.lang3.version>3.7</commons.lang3.version>
</properties>
<!--所需jar包配置,可以通过maven仓库进行查找:http://mvnrepository.com/-->
<dependencies>
<!--spring 基础包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring 事务包 jdbc,tx-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring web mvc 模块-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring整合的测试包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--AespectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectJ.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectJ.version}</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!--mybatis-spring整合包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
<!--oracle-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>${oracle.version}</version>
</dependency>
<!--c3p0数据源-->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
<!--日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<!--jstl-->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-jstlel</artifactId>
<version>${jstl.version}</version>
</dependency>
<!--jackson数据转换包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<!--cocommons-lang3 帮助包-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons.lang3.version}</version>
</dependency>
</dependencies>
<build>
<finalName>SSMDemo</finalName>
<plugins>
<!-- mybatis-generator自动生成代码插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<verbose>true</verbose><!-- 打印创建info信息 -->
<overwrite>true</overwrite><!-- 重写生成的代码,除了mapper.xml文件是在最后追加sql语句 -->
</configuration>
</plugin>
<!--Maven编译插件,指定编译的jdk版本,和字符编码-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
如果有其他jar包需要添加的,可以自己通过Maven仓库进行查找,比如需要添加mybatis-plus.jar:
在浏览器中输入Maven仓库地址:Maven Repository 回车。在搜索框中输入自己需要查找的jar包名称,回车。即可看到如下页面:
点击连接进入,选择自己需要的版本,获取maven配置信息,加入到pom.xml中即可。
好,到这里,pom.xml文件配置完毕后,稍等一会,就可以看到我们的项目External Libraies中,出现了许多我们需要的jar,当然也有一些我们没有配置的依赖包也出现了。这是Maven的一大好处,帮我们解决了一些依赖关系的jar。当然在Idea的Maven Projects -->Plugins-->中有我们稍后会用到的Mybatis逆向生成插件。
在这里需要提醒一下,添加Oracle数据库jar包的问题。由于Oracle授权问题,Maven3不提供oracle JDBC driver,我们也可以在Maven的中心搜索ojdbc驱动包,但是可以看到版本过于陈旧,即使有坐标,也下载不了。这时候就需要我们手动把本地的数据库驱动jar包添加到Maven仓库中。具体做法如下:
1. 在本地Oracle的安装目录中找到Oracle的驱动jar包,一般是在:
{oracle安装目录}\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6_g.jar. 我的数据库是11g的,如果版本不一样,则这里的jar包名称不同哟。
2.打开数据库客服端,输入sql语句查询当前安装数据库的版本号: SELECT * FROM v$version; 获取版本号,主要用途我们要下载的jar需要和本地的数据库匹配。
3.在cmd窗口中运行mavn命令,进行手动下载放到我们自己的Maven仓库中,这样后面配置数据库pom.xml的时候,就直接在自己仓库取了。
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.5.0 -Dpackaging=jar -Dfile=D:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6_g.jar
这里需要注意几个点: 1. -Dversion=上面查询的数据库版本号, 2. -Dfile=自己本地数据库的驱动包路径,运行中如果提示mvn不是可运行操作符,则说明你没有安装Mavn,如何安装Maven可以参考:点击打开链接
Oracle的问题就解决了。
3.配置逆向工程的文件存放路径,数据转换方式,生成文件形式,以及要生成的表.....
配置文件如下,所配置信息的说明都在注释里,注意:该文件需要放在根目录下,一般是放在resouce资源文件中,配置文件的名称为:generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 引入外部数据库配置文件:通过el表达式进行读取 -->
<properties resource="c3p0.properties"/>
<!-- 指定数据连接驱动jar地址 -->
<classPathEntry location="${oracle.classPath}" />
<!-- 一个数据库一个context -->
<!-- targetRuntime之后加上simple可以生成简单版 MyBatis3 复杂版-->
<context id="infoGuardian" targetRuntime="MyBatis3">
<!-- 生成的pojo,将implements Serializable -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
<!-- 注释 -->
<commentGenerator >
<property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->
<!--<property name="suppressDate" value="true" /> <!– 是否生成注释代时间戳–>-->
</commentGenerator>
<!-- jdbc连接 -->
<jdbcConnection driverClass="${oracle.driver}"
connectionURL="${oracle.url}"
userId="${oracle.user}"
password="${oracle.pwd}" />
<!-- 类型转换 -->
<javaTypeResolver>
<!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成实体类地址 -->
<javaModelGenerator targetPackage="com.zt.pojo" targetProject="src/main/java" >
<!-- 是否在当前路径下新加一层schema -->
<property name="enableSubPackages" value="false"/>
<!-- 是否针对string类型的字段在set的时候进行trim调用 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成mapxml文件 -->
<sqlMapGenerator targetPackage="mybatis/mappers" targetProject="src/main/resources" >
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- 生成mapxml对应client,也就是接口dao -->
<javaClientGenerator targetPackage="com.zt.mapper" targetProject="src/main/java" type="XMLMAPPER" >
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!--要生成的数据库表-->
<table tableName="sys_dept" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<!--字段名称使用骆驼命名方式:dept_no 变为deptNo-->
<property name="useActualColumnNames" value="false" />
</table>
<table tableName="sys_emp" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<property name="useActualColumnNames" value="false" />
</table>
</context>
</generatorConfiguration>
c3p0.properties数据库配置文件:
c3p0.properties
oracle.classPath = D:\\app\\Administrator\\product\\11.2.0\\dbhome_1\\jdbc\\lib\\ojdbc6_g.jar
oracle.driver = oracle.jdbc.driver.OracleDriver
oracle.url = jdbc:oracle:thin:@localhost:1521:orcl
oracle.user = scott
oracle.pwd = tiger
c3p0.initPoolSize = 5
c3p0.maxPoolSize = 500
c3p0.minPoolSize = 5
c3p0.acquireIncrement = 10
c3p0.maxIdleTime = 60000
c3p0.checkoutTimeout = 60000
到此就可以进行逆向工程生成Pojo,DAO以及xml sql映射文件了。
双击generate插件,稍等出现如下文件即表示逆向工程构建成功。
POJO实体类:
DAO(Mapper)接口:
SQL映射文件:
到此。逆向工程生成完毕。接下来就是框架整合以及代码编写了。
4.创建目录结构
在项目中添加对应工程常用的包结构service接口包,service接口实现包,帮助包util, 控制器包controller.....,并在service中添加一个IDeptService接口,在impl包中添加一个DeptServiceImpl并实现IDeptService接口。
5.编写Service
在IDeptService中添加一个抽象方法,用于根据ID查询Dept表中所有信息,并在DeptServiceImpl中进行实现,并添加Service注解和注入SysDeptMapper实例。
IDeptService.java
package com.zt.service.impl;
import com.zt.pojo.SysDept;
/**
* Created by CDHong on 2018/4/3.
*/
public interface IDeptService {
SysDept findDeptById(Integer deptNo);
}
DeptServiceImpl.java
package com.zt.service;
import com.zt.mapper.SysDeptMapper;
import com.zt.pojo.SysDept;
import com.zt.service.impl.IDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by CDHong on 2018/4/3.
*/
@Service("deptService")
//添加Service注解,让Spring进行实例化管理,并给该实例化对象取一个名字,后面使用
public class DeptServiceImpl implements IDeptService {
//注入需要的Mapper实例,用于方法调用
@Autowired private SysDeptMapper sysDeptMapper;
/**
* 功能:根据ID查询部门信息
* @param deptNo 部门编号
* @return 返回部门信息
*/
@Override
public SysDept findDeptById(Integer deptNo) {
return sysDeptMapper.selectByPrimaryKey(deptNo);
}
}
6.Spring配置及Mybatis整合
在src/main/resource/mybatis中新建一个Mybatis核心配置文件(mybatis-config.xml),到MyBatis中文官网复制核心配置文件表头配置,粘贴到mybatis-config.xml文件中。并添加一些设置:
mybatis-config.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>
<settings>
<!--全局属性字段自动映射开启,不管是否嵌套-->
<setting name="autoMappingBehavior" value="FULL"/>
<!--开启数据库字段和实体字段的骆驼命名映射 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--指定mybatis项目使用log4j配置文件完成日志输出,避免整合spring框架后不能打印sql语句-->
<setting name="logImpl" value="log4j" />
</settings>
<typeAliases>
<!--别名开启,在sql映射中不用再写实体类的全类名-->
<package name="com.zt.pojo" />
</typeAliases>
</configuration>
创建spring-mybatis.xml文件,配置spring常规信息以及与Myabtis框架的整合操作。在src/main/resource目录下新建一个spring目录,并创建spring-mybatis.xml文件:
在当前配置文件中进行相关配置: spring-config.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:context="http://www.springframework.org/schema/context"
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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--加载c3p0.properties-->
<context:property-placeholder location="classpath:c3p0.properties" />
<!--配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
<property name="driverClass" value="${oracle.driver}"/>
<property name="jdbcUrl" value="${oracle.url}"/>
<property name="user" value="${oracle.user}"/>
<property name="password" value="${oracle.pwd}"/>
<property name="initialPoolSize" value="${c3p0.initPoolSize}"/>
<property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
<property name="minPoolSize" value="${c3p0.minPoolSize}"/>
<property name="maxIdleTime" value="${c3p0.maxIdleTime}"/>
<property name="acquireIncrement" value="${c3p0.acquireIncrement}"/>
<property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
</bean>
<!--配置SqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
<property name="mapperLocations" value="classpath:mybatis/mappers/*Mapper.xml"/>
</bean>
<!--交给Mapper 完成自动扫描-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="com.zt.mapper" />
</bean>
<!--配置事务管理-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!--使用注解完成事务管理,注册-->
<tx:annotation-driven />
<!--把DAO交给Service-->
<context:component-scan base-package="com.zt.service.impl" />
</beans>
7.使用Junit4.12进行持久层的测试
package com.zt.test;
import com.zt.pojo.SysDept;
import com.zt.service.IDeptService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* Created by CDHong on 2018/4/3.
*/
@ContextConfiguration("classpath:spring/spring-mybatis.xml") //加载spring-mybatis.xml配置文件
@RunWith(SpringJUnit4ClassRunner.class) //使用spring和junit4的整合类启动
public class DeptServiceTest {
//注入IDeptSerivce的实例,注意我们这里是使用了接口代理,所有需要使用接口来接受
@Autowired private IDeptService deptService;
@Test //建立Junit的测试类,注意这里该方法的访问修饰符和返回值一定是public void
public void testFindDeptById(){
SysDept dept = deptService.findDeptById(2);
System.out.println(dept.getDeptName());
}
}
### Global logging configuration
log4j.rootLogger=Debug, stdout
### Uncomment for MyBatis logging
log4j.logger.org.apache.ibatis=ERROR
### 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
log4j.appender.lastEventSavedAppender=org.apache.ibatis.session.AutoMappingUnknownColumnBehaviorTest$LastEventSavedAppender
运行之后可以看到打印的SQL语句。如下,当然打印的信息也较多。spring的执行过程都有打印。
现在后台持久层的操作没有问题,接下来就要完成前端数据的展示了,在浏览器地址栏输入controller的访问地址,进行数据查询,然后在jsp页面上展示
7.配置SpringMVC
在src/main/resource/spring 目录下创建一个spring-mvc.xml文件,创建方式和spring-mybatis.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: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.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--设置Controller控制器的扫描地址-->
<context:component-scan base-package="com.zt.controller" />
<!-- 配置springmvc返回数据的数据格式,注意必须放在<mvc:annotation-driven>之前 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<!--注解驱动,很多配置都需要它(比如上传下载,类型转换器...),一般都会添加该配置-->
<mvc:annotation-driven />
<!--
静态资源映射,应为WEB-INF是一个安全目录,不能使用get访问,而外部的js,css都是属性get访问,所有需要映射,不然无法读取
location:项目真实路径 mapping:映射路径
-->
<mvc:resources mapping="/resource/**" location="/WEB-INF/resource" />
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
8.配置web.xml,进行spring的监听启动和springmvc的访问配置。
这里需要注意的是,我们使用的maven模板给我们生成的web.xml版本比较老。我们可以通过idea工具重新给我们生成一个新的web.xml,具体步骤如下:
然后在web.xml中进行具体的操作,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--字符编码过滤器-->
<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>
<!--加载Spring IOC容器-->
<context-param>
<!--配置SpringIOC容器所在的地址,如果不配,则默认应该放在WEB-INF目录下,且该文件必须已 【-servlet.xml】结尾-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mybatis.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--加载spring mvc 模块,SpringMVC中央管理器-->
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--404错误页面配置-->
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/pages/404.jsp</location>
</error-page>
</web-app>
9.配置Controller控制器进行数据访问
在src/main/java/com/zt/controller目录中创建一个DeptController类,并在该文件中添加数据数据访问访问方法。
package com.zt.controller;
import com.zt.pojo.SysDept;
import com.zt.service.IDeptService;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Created by CDHong on 2018/4/3.
*/
@Controller //声明为控制器,实例创建交给Spring管理
@RequestMapping("/dept") //根命名空间,用于区分不同模块对应的请求
public class DeptController {
//自动注入控制器中需要DeptService实例
@Autowired private IDeptService deptService;
/**
* 根据ID查询部门信息
* @param id 前端路径传递的部门编号
* @param model 返回的前端的数据,作用域类似于HttpServletRequest
* @return 返回视图解析器的路径
*/
@RequestMapping(value = "/getDeptInfoById/{id}",method = RequestMethod.GET)
public String findById(@PathVariable("id") Integer id, Model model){
SysDept dept = deptService.findDeptById(id);
model.addAttribute("dept",dept);
return "showDept";
}
}
10.编辑JSP进行数据展示
在WEB-INF目录下新建两个目录,一个是pages用于访问jsp显示文件,一个是resource用于放css,js,img等静态资源。
在pages中新建一个jsp文件showDept.jsp用于数据显示。再建一个404.jsp文件用于web.xml配置对应,出错跳转的位置。
404.jsp页面:
<%-- Created by CDHong 2018/4/3--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<html>
<head>
<base href="<%=basePath%>">
<title>title</title>
</head>
<body>
<h2>这是错误页面,出错了,页面找不到,请联系管理员!!</h2>
</body>
</html>
showDept.jsp页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入jstl标签库,用于页面判断操作--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<html>
<head>
<base href="<%=basePath%>">
<title>title</title>
</head>
<body>
<h2>部门信息:</h2>
<c:if test="${dept==null}">
该部门不存在
</c:if>
${dept.deptId}
${dept.deptName}
</body>
</html>
配置Tomcat,启动web服务器,在浏览器访问:localhost
如果点击【+】号,没有Tomcat Server这个选项,说明你是第一次使用配置Tomcat服务,那么需要先在Defaults选项中找到Tomcat Server/Local,配置一下,和本地安装的Tomcat服务进行关联。关联完毕后,在进行如上步骤这个时候就可以找到了。
在这里会有一个警告,提示没有项目部署到环境中,接下来部署项目:
部署完毕,启动服务器,访问项目:直接输入地址:localhost-->则会进入错误页面,因为项目默认访问的地址是WEB-INF目录下的index.jsp,当然我们也可以在web.xml中进行更改。这里就不做操作了。我们直接访问查询部门的Contorller,并传递部门编号进行查询。
直接访问localhost地址:
访问控制器,并携带要查询的部门编号:
到此,整个项目的搭建和简答测试就完毕了。
整个项目的源码地址请访问:源码下载