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.propertiesoracle.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地址:
訪問控制器,並攜帶要查詢的部門編號:
到此,整個專案的搭建和簡答測試就完畢了。
整個專案的原始碼地址請訪問:原始碼下載
相關推薦
JAVA開發使用SSM框架入門案例
本案例主要做一個簡單的SSM搭建,完成根據ID查詢部門表中資訊並在瀏覽器中顯示。使用Idea2015+jdk1.8+oracle11g,在這個專案中,會使用使用Mavn-MyBatis逆向工程外掛,反向生成程式碼(即通過資料庫表生成DAO介面,Mapper.xml SQL對映
Java開發SSM框架微信支付
etc ray 企業 展示 system 都在 pes generator 程序開發 微信小程序的Java支付開發一直是一塊坑,網上的教程也是琳瑯滿目。筆者六月的時候接觸到了微信的小程序開發摸到了微信支付方面的東西,騰訊的官方文檔也是一言難盡很多地方看不懂,而且官方也沒有提
Java開發SSM框架微信退款
這篇文章是Java微信退款的教程,退款之前使用者需要先進行支付,支付之後才可以使用退款。做到退款的同學應該已經是完成了支付了,我寫的退款和支付的流程很相似只是所需的引數有所不同。 String outTradeNo = request.getParamete
Java基於ssm框架的restful應用開發
unicode ray -c mat after 內容 XP nco restful Java基於ssm框架的restful應用開發 好幾年都沒寫過java的應用了,這裏記錄下使用java ssm框架、jwt如何進行rest應用開發,文中會涉及到全局異常攔截處理、jwt校驗
Scrapy 爬蟲框架入門案例詳解
tin mon setting 爬蟲框架 finished perror project 原因 create 歡迎大家關註騰訊雲技術社區-博客園官方主頁,我們將持續在博客園為大家推薦技術精品文章哦~ 作者:崔慶才 Scrapy入門 本篇會通過介紹一
java整合SSM框架
inter ner 過程 修改 步驟 att hide under api 使用Myeclipse搭建maven項目 準備工作 安裝maven 官網下載安裝(http://maven.apache.org/) 配置環境變
1.Spring框架入門案例
nts ng- pre face www. 分享 version font beans 一、簡單入門案例 入門案例:IoC 1.項目創建與結構 2.接口與實現類 User.java接口 package com.jd.ioc; /** * @author we
Java使用SSM框架實現登錄頁面的驗證碼功能
def ssa bar double trac ext tst setattr info 最終效果展示: 代碼展示: 1、前端登錄頁面代碼展示 <div class="form-group"> <div class="input-ico
Java使用SSM框架實現登錄頁面記住密碼功能
turn 頁面 賦值 ++ mage login ring 實現 member 最終效果展示: 1、登錄頁面JSP代碼 <label class="checkbox"> <input type="checkbox" name="remembe
ssm框架小案例
簡介 Spring+SpringMVC+MyBatis框架(SSM)是比較熱門的中小型企業級專案開發的框架,對於新手來說也是比較容易學習入門的。雖說容易,但在框架搭建過程中仍然遇到了許多問題,因此用例項記錄下來吧。 例項 第一步——導包 Spring框架包及其依賴包&nbs
java多執行緒入門案例(2)之多執行緒簡單應用
上一篇文章:java多執行緒案例(1)之簡單銀行取款問題及其優化 我大概介紹了一下Java程式碼優化的問題,主要針對出學者而言,這一次我要介紹多執行緒應用的簡單案例 。網上有許多多執行緒的案例,但大多都挺複雜的,今天我主要目的也是介紹一下多執行緒應用的簡單案例,讓初學
java多執行緒入門案例(1)之簡單銀行取款問題及其優化
之前學java的時候,學校老師由於課時問題,沒有教我們多執行緒,最近學校外聘的企業教師給我們做實訓要用到多執行緒,因此才初步瞭解多執行緒,以下這個案例只是介紹java程式碼優化,程式碼中有涉及多執行緒,但今天不對其講解,只簡單講解程式碼優化的問題,希望對初學
Java開發技術基礎入門學習路線圖
Web應用,最常見的研發語言是Java和PHP。後端服務,最常見的研發語言是Java和C/C++。大資料,最常見的研發語言是Java和Python。基本可以說,Java是現階段中國網際網路公司中覆蓋度最廣的研發語言,掌握了Java技術體系,不管在成熟的大公司,快速發展的公司,還是創業階段的公司,都能有立足
第六篇 Java Web的框架入門
時間過得很快,轉眼就來到了9月,大四開始了,這個時候比以往的時候都要更焦慮和不安,後面才發現慢慢來,其實一切都來的及。前提是你要主動去學習,於是Java的一些框架我覺得是時候學習了,通過百度的搜尋,發現Java Web 開發主要是有2種主流,
Oracle資料庫使用身份證計算處於哪個年齡段(Java的SSM框架)
這個需求我是實現了,但是在程式碼的優化上沒有做到位,其實可以寫的更加簡潔,但是因為時間緊,就沒有想那麼多。下面附上Java介面邏輯程式碼和mybatis的SQL程式碼: /** * 使用身份證判斷年齡段 * @param addressid *
Oracle資料庫通過身份證計算男女數量比例(Java的SSM框架)
在這裡我們統一使用的是18位的新身份證,15位的忽略不做判斷! 實現功能前,我們需要知道:18位的新身份證,倒數第二位是單數的為男,雙數的為女。 知道這個後,我們就可以直接從SQL語句上著手去編寫,並不需要從程式語言上寫相關邏輯,如果專案還有其他的需求,那我們另說。 我的功能需求就
使用IDEA基於springboot開發ssm框架(undertow代替tomcat以及其他功能)
在這裡,第二次使用springboot開發,看過我之前的文章可知。因為spirngboot是去除xml等繁瑣配置,大部分內容都已經幫你設定好,因此需要有一定的spring基礎才能學習,不然不明白原理會難以下手。 文件結構圖 1. pom.xml需要引入的依賴
【Java】SSM框架整合 附原始碼
前言 前面已經介紹Spring和Mybatis整合,而本篇介紹在IDEA下Spring、Spring MVC、Mybatis(SSM)三個框架的整合,在閱讀本篇之前,建議大家先去了解一下Spring、Spring MVC、Mybatis(三大框架基礎入門傳送門),會達到事半功倍的效果。至於Spring
java增強: ssm框架整合
整合思路: 各元件的關聯關係 配置檔案: 組合各元件的關係 ssm的使用: jsp + jstl + servlet = mysql的curd操作 part1: 組織配置檔案 (整合ssm) 使用idea 新建module-->java web
eclipse開發go語言入門案例
1、配置eclipse下配置GO語言的外掛點選eclipse的“Help”選單,找到“Install New Software…”選單項。如下圖: 點選“Install New Software…”選單項,顯示如下圖:在”Name“內輸入:Goclipse Site輸入完成後