第一个SSM整合的Maven入门级项目(超详细步骤)
環(huán)境
jdk:1.8
Tomcat:7.0
本地mysql:8.0
Eclipse:Eclipse Jee Photon
Spring:4.3.8
AOP:1.8.0
mybatis:3.3.0
Mysql驅(qū)動(dòng):8.0.11
Druid:1.1.10
jstl:1.2
log4j:1.2.17
junit:3.8.1
項(xiàng)目目錄結(jié)構(gòu)
數(shù)據(jù)庫(kù)設(shè)計(jì)
?
運(yùn)行效果
代碼下載
https://download.csdn.net/download/badao_liumang_qizhi/10939695
實(shí)現(xiàn)
環(huán)境搭建
1.下載Maven并配置好。
2.創(chuàng)建Maven項(xiàng)目時(shí)設(shè)置JDK,
eclipse創(chuàng)建maven項(xiàng)目時(shí),顯示的JDK默認(rèn)版本為1.5,實(shí)際使用的JDK為1.8。
修改參照:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/86184775
創(chuàng)建項(xiàng)目
1.使用Eclipse--File--New--Maven project
?
2.點(diǎn)擊next
3.再點(diǎn)擊next
4.選擇maven-archetype-webapp,點(diǎn)擊next
5.輸入項(xiàng)目相關(guān)信息Group Id(組織名)、Artifact Id(項(xiàng)目名)點(diǎn)擊Finish
?建成后的目錄
配置新建的項(xiàng)目
1.右擊項(xiàng)目--Build Path--Configure Build Path
2.找到Libraries,可以看到此時(shí)JRE默認(rèn)是1.5的.
JRE是Java Runtime Environment縮寫,指Java運(yùn)行環(huán)境,是Sun的產(chǎn)品。
運(yùn)行JAVA程序所必須的環(huán)境的集合,包含JVM標(biāo)準(zhǔn)實(shí)現(xiàn)及Java核心類庫(kù)。
3.點(diǎn)擊JRE System Libray [J2SE-1.5] --點(diǎn)擊Remove--Apply
4.移除完之后再點(diǎn)擊Add Libray
5.然后選擇JRE System Library,點(diǎn)擊next
6.選擇自己本地對(duì)應(yīng)的JRE,這里是JRE1.8,點(diǎn)擊Finish
7.這時(shí)可以看到已經(jīng)將JRE改為1.8了,點(diǎn)擊Apply and Close。
8.回來(lái)再點(diǎn)擊Add Library,選擇Server Runtime
9. 選中Tomcat并點(diǎn)擊Finish
?
10.配置完之后應(yīng)該為下面這樣,點(diǎn)擊Apply and Close
?
11.Eclipse設(shè)置Server好Tomcat,Windows--Preferences--Server--Runtime Environment,如果已經(jīng)有了就選中后點(diǎn)擊Edit,如果沒(méi)有則點(diǎn)擊Add。
12.這里點(diǎn)擊編輯,選擇本地Tomcat的目錄,并將JRE修改過(guò)來(lái)。
?
12.查看項(xiàng)目信息
右擊項(xiàng)目--Properties--Project Facets,可以看到此時(shí)的Dynamic Web Services為2.3,java為1.5 ,
Dynamic Web Services為3.0以上才有web.xml,而且如果想要使用Tomcat8.5的話,也要修改。
找到Eclipse的工作目錄下的項(xiàng)目目錄下的.settings文件夾下的org.eclipse.wst.common.project.facet.core.xml
用編輯器打開
修改之前
修改之后
返回Eclipse,刷新項(xiàng)目,右擊項(xiàng)目,選擇refresh
刷新之后再看到,已經(jīng)自動(dòng)更改過(guò)來(lái)了。
同步配置項(xiàng)目
打開Eclipse下maven項(xiàng)目下的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" xmlns:web="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" version="3.0">?
修改Maven項(xiàng)目的pom.xml
?修改之前的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.badao</groupId><artifactId>ssmTest</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>ssmTest Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><build><finalName>ssmTest</finalName></build> </project>?
修改為:
<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.bdao</groupId><artifactId>ssmTest</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>ssm Maven Webapp</name><url>http://maven.apache.org</url><build><finalName>ssmTest</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin> </plugins></build></project>更新項(xiàng)目?
右擊項(xiàng)目--Maven--Update Project
選擇要更新的項(xiàng)目,點(diǎn)擊OK
?
添加項(xiàng)目依賴
修改pom.xml內(nèi)容
<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.bdao</groupId><artifactId>ssmTest</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>ssm Maven Webapp</name><url>http://maven.apache.org</url><properties><!-- Spring版本號(hào) --><spring.version>4.3.8.RELEASE</spring.version></properties><dependencies><!-- Spring相關(guān)包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><!-- AOP相關(guān)包 --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.8.0</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.0</version></dependency><!-- MyBatis相關(guān)包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.0</version></dependency><!-- MySQL相關(guān)包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><!-- 數(shù)據(jù)庫(kù)連接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><!-- Spring集成MyBatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.3</version></dependency><!-- JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù) --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- 日志相關(guān)包 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.21</version></dependency><!-- 單元測(cè)試相關(guān)包 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><build><finalName>ssmTest</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin> </plugins></build></project>?
保存后可以看到相關(guān)依賴已經(jīng)被加載
完善項(xiàng)目結(jié)構(gòu)
因?yàn)榉?wù)端maven項(xiàng)目的標(biāo)準(zhǔn)結(jié)構(gòu)有四個(gè)子包:src/main/java、src/main/resources、src/test/java、src/test/resources,
這里缺少了src/test/resources,所以手動(dòng)補(bǔ)上。
右擊test目錄--new--Folder
?
輸入resources,點(diǎn)擊FInish
?
編寫配置文件
創(chuàng)建log4j.properties
在src--main-resource下右擊--new--File
?
輸入log4j.properties
內(nèi)容如下:
# Global logging configuration log4j.rootLogger=ERROR, stdout # MyBatis logging configuration... log4j.logger.com.how2java=TRACE # 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?
創(chuàng)建mybatis-config.xml
在 src--main-resource下右擊--new--Other
選擇XML下的XML File,點(diǎn)擊next
名字是mybatis-config.xml ,點(diǎn)擊Finish。
?
在這里我們只配置一個(gè)別名,使用typeAliases標(biāo)簽,類型別名,就是一個(gè)實(shí)體類的名字太長(zhǎng),而且使用頻率比較高時(shí),
就給這個(gè)全限定的類名起了一個(gè)別名。 配置別名是為了在對(duì)象映射文件中接受參數(shù)類型和返回參數(shù)類型時(shí)使用。
1.如果是設(shè)定單個(gè)類的別名:
<typeAlias alias="uesr" type="com.badao.pojo.User"/>?alies:取的別名。
type:這個(gè)別名所對(duì)應(yīng)類的Java類。
2.如果是設(shè)置這個(gè)包下的所有類的別名:
<typeAliases><package name="com.badao.pojo" /></typeAliases>默認(rèn)是類名小寫。
3.mybatis-config.xml 內(nèi)容
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><!-- 設(shè)置別名 --><typeAliases><package name="com.badao.pojo" /></typeAliases> </configuration>?
創(chuàng)建spring-mvc.xml
?
同上也在此目錄下新建spring-mvc.xml
1.啟用自動(dòng)掃描
代碼:
<context:component-scan base-package="com.badao.*" />講解:
自動(dòng)掃描該包,使SpringMVC認(rèn)為該包下使用了@Controller 注解的是控制器
2.注冊(cè)MVC注解驅(qū)動(dòng)
代碼:
<mvc:annotation-driven />講解:
<mvc:annotation-driven>會(huì)自動(dòng)注冊(cè)RequestMappingHandlerMapping與RequestMappingHandlerAdapter兩個(gè)Bean,
這是Spring MVC為@Controller分發(fā)請(qǐng)求所必需的,并且提供了數(shù)據(jù)綁定支持,@NumberFormatannotation支持,
@DateTimeFormat支持,@Valid支持讀寫XML的支持(JAXB)和讀寫JSON的支持(默認(rèn)Jackson)等功能。
3.設(shè)置靜態(tài)資源可訪問(wèn)
代碼:
<mvc:default-servlet-handler />講解:
在springMVC-servlet.xml中配置<mvc:default-servlet-handler />后,會(huì)在Spring MVC上下文中定義一個(gè)org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它會(huì)像一個(gè)檢查員,對(duì)進(jìn)入DispatcherServlet的URL進(jìn)行篩查,
如果發(fā)現(xiàn)是靜態(tài)資源的請(qǐng)求,就將該請(qǐng)求轉(zhuǎn)由Web應(yīng)用服務(wù)器默認(rèn)的Servlet處理,如果不是靜態(tài)資源的請(qǐng)求,才由DispatcherServlet繼續(xù)處理。
一般Web應(yīng)用服務(wù)器默認(rèn)的Servlet名稱是"default",因此DefaultServletHttpRequestHandler可以找到它。
如果你所有的Web應(yīng)用服務(wù)器的默認(rèn)Servlet名稱不是"default",則需要通過(guò)default-servlet-name屬性顯示指定:
<mvc:default-servlet-handler default-servlet-name="所使用的Web服務(wù)器默認(rèn)使用的Servlet名稱" />
4.配置視圖解析器
代碼:
<!-- 配置視圖解析器,可以顯式設(shè)置,也可以不設(shè)置,不設(shè)置會(huì)依據(jù)SpringMVC的默認(rèn)設(shè)置 --><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean>?
講解:
VIewResolver的作用是根據(jù)viewName找到view對(duì)象,SpringMVC用于處理視圖最重要的兩個(gè)接口是ViewResolver和View。
ViewResolver的主要作用是把一個(gè)邏輯上的視圖名稱解析為一個(gè)真正的視圖。
其中name="prefix,配置的前綴,因?yàn)檫@里的jsp文件是放在WEB-INF下的新建的jsp目錄.
name="suffix" ,配置后綴,解析以.jsp結(jié)尾的.
這樣SpringMVC就能在Controller中根據(jù)返回的字符串找到要跳轉(zhuǎn)的視圖,比如在Controller中:
@RequestMapping("listUser")public ModelAndView listUser(){ModelAndView mav = new ModelAndView();List<User> cs= userService.selectAllUser();// 放入轉(zhuǎn)發(fā)參數(shù)mav.addObject("userList", cs);// 放入jsp路徑mav.setViewName("listUser");return mav;那么視圖就能解析為WEB-INF下的jsp目錄下的listUser.jsp
5.完整spring-mvc.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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 啟動(dòng)自動(dòng)掃描 --><context:component-scan base-package="com.badao.*" /><!-- 注冊(cè)MVC注解驅(qū)動(dòng) --><mvc:annotation-driven /><!-- 靜態(tài)資源可訪問(wèn)的設(shè)置方式 --><mvc:default-servlet-handler /><!-- 配置視圖解析器,可以顯式設(shè)置,也可以不設(shè)置,不設(shè)置會(huì)依據(jù)SpringMVC的默認(rèn)設(shè)置 --><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean> </beans>?
創(chuàng)建spring-mybatis.xml
同上也在此目錄下新建spring-mybatis.xml,這是Spring整合Mybatis時(shí)的配置文件。
1.定義數(shù)據(jù)源Bean
代碼:
<beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource">? ? ?<propertyname="url"value="jdbc:mysql://localhost:3306/ssmtest?characterEncoding=UTF-8&useSSL=false" /><property name="username" value="root" /><property name="password" value="123" /></bean>講解:
①關(guān)于Druid連接池的概念以及屬性和使用等參照以下
SSM中使用Druid連接池:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/85120936
②如果項(xiàng)目運(yùn)行后提示:
對(duì)實(shí)體 "useSSL" 的引用必須以 ';' 分隔符結(jié)尾。
參照:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/86554028
③關(guān)于配置文件中url中useSSL=false
參照:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/86554488
④關(guān)于配置文件中url中&
參照:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/86554028
?
2.注冊(cè)SqlSessionFactoryBean
代碼:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自動(dòng)掃描mappers.xml文件 --><property name="mapperLocations" value="classpath:com/badao/mapper/*.xml" /><property name="configLocation" value="classpath:mybatis-config.xml"></property> </bean>講解:
SqlSessionFactoryBean有一個(gè)必須屬性dataSource。
mapperLocations 屬性使用一個(gè)資源位置的 list。 這個(gè)屬性可以用來(lái)指定 MyBatis 的 XML 映射器文件的位置。
configLocation指定mybatis配置文件的位置。
3.接口轉(zhuǎn)化為bean
代碼:
?<!-- DAO接口所在包名,Spring會(huì)自動(dòng)查找其下的類 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.badao.mapper" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /></bean>講解:
如果數(shù)據(jù)映射接口很多的話,需要在Spring的配置文件中對(duì)數(shù)據(jù)映射接口做配置,相應(yīng)的配置項(xiàng)會(huì)很多了。
為了簡(jiǎn)化配置,在MyBatis-Spring中提供了一個(gè)轉(zhuǎn)換器MapperScannerConfig它可以將接口轉(zhuǎn)換為Spring容器中的Bean,
在Service中@Autowired的方法直接注入接口實(shí)例。MapperScannerConfigurer將掃描basePackage所指定的包下的所有接口類(包括子類),如果它們?cè)赟QL映射文件中定義過(guò),則將它們動(dòng)態(tài)定義為一個(gè)Spring Bean,這樣,我們?cè)赟ervice中就可以直接注入映射接口的bean。
4.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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 定義數(shù)據(jù)源Bean --><!-- Druid --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><propertyname="url"value="jdbc:mysql://localhost:3306/ssmtest?characterEncoding=UTF-8&useSSL=false" /><property name="username" value="root" /><property name="password" value="123" /></bean><!-- 注冊(cè)SqlSessionFactoryBean --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自動(dòng)掃描mappers.xml文件 --><property name="mapperLocations" value="classpath:com/badao/mapper/*.xml" /><property name="configLocation" value="classpath:mybatis-config.xml"></property></bean><!-- DAO接口所在包名,Spring會(huì)自動(dòng)查找其下的類 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.badao.mapper" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /></bean> </beans>編寫業(yè)務(wù)代碼
編寫POJO
在main下java下新建包c(diǎn)om.badao.pojo
在此包下新建User.java
package com.badao.pojo;public class User {private Integer id;private String name;private Integer age;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public User() {super();// TODO Auto-generated constructor stub}public User(Integer id, String name, Integer age) {super();this.id = id;this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}新建mapper層
同理再新建包c(diǎn)om.badao.mapper
此包下新建UserMapper.java接口
package com.badao.mapper;import java.util.List; import com.badao.pojo.User;public interface UserMapper {public List<User> selectAllUser(); }再在此包下新建UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.badao.mapper.UserMapper"><select id="selectAllUser" resultType="User">select * from?? user????</select>???</mapper>新建service層
同理新建包c(diǎn)om.badao.service
在此包下新建UserService.java接口
package com.badao.service;import java.util.List;import com.badao.pojo.User;public interface UserService {List<User> selectAllUser();}再新建包c(diǎn)om.badao.service.impl
在此包新建UerServiceImpl.java作為上面的實(shí)現(xiàn)類
package com.badao.service.impl;import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import com.badao.mapper.UserMapper; import com.badao.pojo.User; import com.badao.service.UserService; @Service public class UserServiceImpl implements UserService {@AutowiredUserMapper userMapper;public List<User> selectAllUser() {// TODO Auto-generated method stubreturn userMapper.selectAllUser();}}新建controller層
同理新建包c(diǎn)om.badao.controller
在此包下新建UserController.java
package com.badao.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;import com.badao.pojo.User; import com.badao.service.UserService;// 告訴spring mvc這是一個(gè)控制器類 @Controller @RequestMapping("") public class UserController {@AutowiredUserService userService;@RequestMapping("listUser")public ModelAndView listUser(){ModelAndView mav = new ModelAndView();List<User> cs= userService.selectAllUser();// 放入轉(zhuǎn)發(fā)參數(shù)mav.addObject("userList", cs);// 放入jsp路徑mav.setViewName("listUser");return mav;}}完整業(yè)務(wù)包結(jié)構(gòu)
?
編寫jsp頁(yè)面
在webapp下的WEB-INF下新建jsp目錄,再在jsp目錄下新建listUser.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" import="java.util.*"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%pageContext.setAttribute("APP_PATH", request.getContextPath()); %> <!DOCTYPE html> <html> <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>查詢所有用戶</title> </head><script type="text/javascript" src="${APP_PATH }/static/js/jquery-1.12.4.min.js"></script> <link href="${APP_PATH }/static/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet"> <script src="${APP_PATH }/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script> <body> <table align='center' border='1' cellspacing='0' class="table table-bordered "<th ><td>id</td><td>name</td><td>age</td></th><c:forEach items="${userList}" var="u"><tr class="active"><td >${u.id}</td><td>${u.name}</td><td>${u.age}</td></tr></c:forEach> </table></body> </html>編寫web.xml
打開web.xml,配置spring的配置文件以及spring mvc的配置文件
<?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"xmlns:web="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" version="3.0"><!-- spring的配置文件--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mybatis.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- spring mvc核心:分發(fā)servlet --><servlet><servlet-name>mvc-dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- spring mvc的配置文件 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>mvc-dispatcher</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>項(xiàng)目運(yùn)行前的準(zhǔn)備
使用Maven構(gòu)建項(xiàng)目
在項(xiàng)目上右鍵,找到Maven下的Update Project
然后點(diǎn)擊OK,不出現(xiàn)異常就是正常。
然后再項(xiàng)目上右鍵,選擇run as --maven install
會(huì)在控制臺(tái)輸出以下信息:
[INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building the effective model for com.bdao:ssm:war:0.0.1-SNAPSHOT [WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 115, column 16 [WARNING] [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. [WARNING] [WARNING] For this reason, future Maven versions might no longer support building such malformed projects. [WARNING] [INFO] [INFO] ----------------------------< com.bdao:ssm >---------------------------- [INFO] Building ssm Maven Webapp 0.0.1-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ssm --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 4 resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ ssm --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ ssm --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ ssm --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ ssm --- [INFO] [INFO] --- maven-war-plugin:2.2:war (default-war) @ ssm --- [INFO] Packaging webapp [INFO] Assembling webapp [ssm] in [F:\EcpliseWorkspace\ssm\target\ssm] [INFO] Processing war project [INFO] Copying webapp resources [F:\EcpliseWorkspace\ssm\src\main\webapp] [INFO] Webapp assembled in [683 msecs] [INFO] Building war: F:\EcpliseWorkspace\ssm\target\ssm.war [INFO] WEB-INF\web.xml already added, skipping [INFO] [INFO] --- maven-install-plugin:2.4:install (default-install) @ ssm --- [INFO] Installing F:\EcpliseWorkspace\ssm\target\ssm.war to D:\Maven\maven-repository\com\bdao\ssm\0.0.1-SNAPSHOT\ssm-0.0.1-SNAPSHOT.war [INFO] Installing F:\EcpliseWorkspace\ssm\pom.xml to D:\Maven\maven-repository\com\bdao\ssm\0.0.1-SNAPSHOT\ssm-0.0.1-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 5.241 s [INFO] Finished at: 2019-02-20T23:06:15+08:00 [INFO] ------------------------------------------------------------------------?
如圖:
?
則說(shuō)明構(gòu)建成功,前面的配置沒(méi)有問(wèn)題。
項(xiàng)目運(yùn)行
右擊項(xiàng)目,選擇debug as --debug on server
然后選擇前面配置的Tomcat
然后點(diǎn)擊Finish,控制臺(tái)沒(méi)報(bào)異常,啟動(dòng)Tomcat成功。
打開瀏覽器輸入:
http://localhost:8080/ssm/listUser
?
?
?
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的第一个SSM整合的Maven入门级项目(超详细步骤)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Navicat通过存储过程批量插入mys
- 下一篇: Word中轻松插入本地视频