JAVA开发使用SSM框架入门案例

本案例主要做一个简单的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());
    }
}


运行后正常打印部门名称,但是有log4j的警告提示,接下来我们加入一下log4j日志的配置文件再查看其执行的sql语句。 log4j.properties的具体配置可以参考: 点击打开链接
### 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地址:


访问控制器,并携带要查询的部门编号:


到此,整个项目的搭建和简答测试就完毕了。

整个项目的源码地址请访问:源码下载

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CDHong.it

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值