新手创建Eclipse+Maven+Spring+SpringMVC+Mybatis+jsp+MySql项目

    xiaoxiao2025-05-16  45

    目录

    1  准备工作

    2  创建maven项目

    2.1 打开几个窗口

    2.2 建项目

    3  基本文件夹结构

    4  我们的目标是填满配置

    4.1 pom.xml

    4.2 jdbc.properties

    4.3 log4j.properties

    4.4 mybatis.xml

    4.5 springMVC.xml

    4.6 applicationContext.xml

    4.7 web.xml

    5  正式写代码

    5.1 数据库

    5.2 Test.java

    5.3 TestController .java

    5.4 TestService.java

    5.5 TestServiceImpl.java

    5.6 TestDao.java

    5.7 testMapper.xml

    5.8 index.jsp(本例中没那么必要)

    5.9 testPage.jsp

    6  效果

    7  结语

    本文参考 https://blog.csdn.net/xingyuncaojun/article/details/80743353 没多大改变,虽有明显的拾人牙慧之嫌,但毕竟此文目的仅是供个人日后好找。

    1  准备工作

    额……就是安装好什么JDK啦…MySQL数据库啦…Eclipse啦…哦,Eclipse上顺便配好maven和Tomcat。

    我本次搭的时候采用的是JDK8.0、MySQL5.5、Eclipse jee 2018、maven3.6.1、Tomcat7。

    准备好了,打开eclipse开始干正事。

    2  创建maven项目

    无脑跟我做步骤:

    2.1 打开几个窗口

    根据个人喜好吧,推荐这几个:

    2.1.1Package Explorer:(菜单)Window-->Show View-->other...-->搜索框里打“package”,选Package Explorer-->Open;

    2.1.2Project Explorer:操作参考2.1.1;

    2.1.3Servers:操作参考2.1.1;

    2.1.4Console:操作参考2.1.1;

    2.1.5Debug:操作参考2.1.1;

    2.1.1项目编写用,2.1.2一会儿消除错误用,2.1.3服务器用,2.1.4控制台,2.1.5打断点。

    2.2 建项目

    在刚打开的两个窗口任一个(推荐project explorer)上单击鼠标右键-->New-->Other...

    -->Maven-->Maven Project-->Next

    -->勾选一下创建一个简单项目-->Next

    -->填写项目信息-->Finish

    这时候,来事了

    当然,在这我还换了个jre,有需要的可参考步骤:在项目名上单击右键-->Build Path-->Configure Build Path...-->Libraries-->选中不需要的jar包点Remove-->Add Library...-->JRE System Library...-->Next-->选中你需要的jre-->Finish-->Apply

    基本上,maven项目可以了,先不急着加jar包,下边先怼个基本架子。

    3  基本文件夹结构

    这个就不废话了,哦,换个窗口,下图所示。

    4  我们的目标是填满配置

    4.1 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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ssmzc</groupId> <artifactId>ssmzc</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <url>http://maven.apache.org</url> <properties> <!-- spring.version --> <spring.version>4.2.5.RELEASE</spring.version> <!-- mybatis.version --> <mybatis.version>3.2.8</mybatis.version> <!-- mysql-driver.version --> <mysql-driver.version>5.1.29</mysql-driver.version> <!-- log4j日志jar包版本号 --> <slf4j.version>1.7.18</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> <!-- spring,springMVC 相关jar包配置 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</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-oxm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</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-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.6.12</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <!-- Mybatis 相关jar包配置 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- spring 和 mybatis整合jar包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <!-- mysql驱动jar包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-driver.version}</version> </dependency> <!-- 数据库连接池jar包 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <!-- 日志相关jar包 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!-- JSP标签相关jar包 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <!-- jacksonjar包 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.7.0</version> </dependency> <!--加入servlet API --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <!-- 上传jar包 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3</version> </dependency> </dependencies> <build> <finalName>ssmzc</finalName> </build> </project>

    4.2 jdbc.properties

    jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://ip:端口/ssmzc jdbc.username=用户名 jdbc.password=密码 initialSize=0 maxActive=20 maxIdle=20 minIdle=1 maxWait=60000

    4.3 log4j.properties

    #定义log输出级别 log4j.rootLogger=INFO,Console,File #定义日志输出目的地为控制台 log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out #可以灵活的指定日志输出格式,下面一行是指定具体的格式 log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern==[%c] - %m%n #文件大小到达指定尺寸的时候产生一个新的文件 log4j.appender.File=org.apache.log4j.RollingFileAppender #指定输出目录 log4j.appender.File.File=logs/my.log #定义文件最大大小 log4j.appender.File.MaxFileSize=10MB #输出所有日志,如果换成DEBUG表示输出DEBUG以上的级别的日志 log4j.appender.File.Threshold=ALL log4j.appender.File.layout=org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

    4.4 mybatis.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> <!-- 别名 --> <typeAliases> <package name="com.ssmzc.beans"/> </typeAliases> </configuration>

    4.5 springMVC.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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 扫描的包 --> <context:component-scan base-package="com.ssmzc.controller"></context:component-scan> <!-- 视图解析器(JSP) --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/pages/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <!-- 通过名字解析视图的视图解析器 --> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> <property name="order"> <value>100</value> </property> </bean> <!-- 上传视图解析器 --> <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding"> <value>UTF-8</value> </property> </bean> <!--json解析器配置--> <!--将字符串转换为json--> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean id="stringConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <!-- 这里顺序不能反,一定先写text/html,不然ie下出现下载提示 --> <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <!-- 这里顺序不能反,一定先写text/html,不然ie下出现下载提示 --> <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean> <mvc:annotation-driven/> <mvc:default-servlet-handler/> </beans>

    4.6 applicationContext.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:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <!-- bao扫描 --> <context:component-scan base-package="com.ssmzc.dao"></context:component-scan> <context:component-scan base-package="com.ssmzc.service"></context:component-scan> <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"></property> <property name="ignoreUnresolvablePlaceholders" value="true"></property> </bean> <!-- 配置数据库连接 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> <!-- 初始化链接大小 --> <property name="initialSize" value="${initialSize}"></property> <!-- 连接池最大数量 --> <property name="maxActive" value="${maxActive}"></property> <!-- 连接池最大空闲 --> <property name="maxIdle" value="${maxIdle}"></property> <!-- 连接池最小空闲 --> <property name="minIdle" value="${minIdle}"></property> <!-- 获取链接最大等待时间 --> <property name="maxWait" value="${maxWait}"></property> </bean> <!-- 配置mybatis的sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath*:/mapper/**/*.xml"></property> <!-- <property name="mapperLocations"><list><value>classpath*:/mapper/**/*.xml</value></list></property> --> <!-- mybatis配置文件 --> <property name="configLocation" value="classpath:mybatis-config.xml"></property> </bean> <!-- Dao 接口所在包名,spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.ssmzc.dao"></property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- 事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 配置事务通知属性 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!-- 定义事务传播属性 --> <tx:attributes> <tx:method name="insert*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="edit*" propagation="REQUIRED"/> <tx:method name="save*" propagation="REQUIRED"/> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="new*" propagation="REQUIRED"/> <tx:method name="set*" propagation="REQUIRED"/> <tx:method name="remove*" propagation="REQUIRED"/> <tx:method name="delete*" propagation="REQUIRED"/> <tx:method name="change*" propagation="REQUIRED"/> <tx:method name="get*" propagation="REQUIRED" read-only="true"/> <tx:method name="find*" propagation="REQUIRED" read-only="true"/> <tx:method name="load*" propagation="REQUIRED" read-only="true"/> <tx:method name="query*" propagation="REQUIRED" read-only="true"/> <tx:method name="select*" propagation="REQUIRED" read-only="true"/> <tx:method name="*" propagation="REQUIRED" read-only="true"/> </tx:attributes> </tx:advice> <!-- 配置事务切面 --> <aop:config> <aop:pointcut expression="execution(* com.ssmzc.service.*.*(..))" id="serviceOperation"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"/> </aop:config> <!-- 对事务启用注解支持 --> <tx:annotation-driven transaction-manager="transactionManager"/> </beans>

    4.7 web.xml

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance http://www.springmodules.org/schema/cache/springmodules-cache.xsd http://www.springmodules.org/schema/cache/springmodules-echache.xsd" xmlns="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"> <display-name>ssmzc</display-name> <!-- spring 配置文件--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <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监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止spring内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

    5  正式写代码

    5.1 数据库

    但愿还能想起来没建数据库呢。建库随意,我目前还在用黑窗口,不想干的话,sql在bean类的注释里。

    5.2 Test.java

    import java.io.Serializable; public class Test implements Serializable { /** * */ private static final long serialVersionUID = 1L; /** * create database ssmzc charset=utf8; * use ssmzc; * create table test_tab (id varchar(32) primary key,tstr varchar(255)) engine=innodb charset=utf8; * insert into test_tab values('admin','admin'),('admi','dmin'),('adm','min'),('ad','in'); */ private String id; private String tstr; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTstr() { return tstr; } public void setTstr(String tstr) { this.tstr = tstr; } @Override public String toString() { return "Test [id=" + id + ", tstr=" + tstr + "]"; } }

    5.3 TestController .java

    import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import com.ssmzc.beans.Test; import com.ssmzc.service.TestService; @Controller public class TestController { @Autowired private TestService testService; @RequestMapping("/toTestPage") public String toTestPage(ModelMap model) { List<Test> testList=testService.getAllTest(); model.addAttribute("testList", testList); return "testPage"; } }

    5.4 TestService.java

    import java.util.List; import com.ssmzc.beans.Test; public interface TestService { List<Test> getAllTest(); }

    5.5 TestServiceImpl.java

    import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ssmzc.beans.Test; import com.ssmzc.dao.TestDao; import com.ssmzc.service.TestService; @Service(value="testService") public class TestServiceImpl implements TestService { @Autowired private TestDao testDao; public List<Test> getAllTest() { return testDao.getAllTest(); } }

    5.6 TestDao.java

    import java.util.List; import com.ssmzc.beans.Test; public interface TestDao { List<Test> getAllTest(); }

    5.7 testMapper.xml

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ssmzc.dao.TestDao"> <select id="getAllTest" resultType="com.ssmzc.beans.Test"> select * from test_tab </select> </mapper>

    5.8 index.jsp(本例中没那么必要)

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" isELIgnored="false"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>首页</title> <style type="text/css"> #testBut { height:38px; line-height:38px; padding:0 18px; background-color:#009688; color:#fff; text-align:center; font-size:14px; border:none; } </style> </head> <body> <div align="center"> <input type="button" id="testBut" name="testBut" onclick="testBut()" value="test"/> </div> <script type="text/javascript"> function testBut(){ window.top.location.href="/ssmzc/toTestPage"; } </script> </body> </html>

    5.9 testPage.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" isELIgnored="false"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>列表</title> </head> <body> <div align="center"> <table border="1px" cellspacing="0" bgcolor="#00ffff" bordercolor="#ffffff" cellpadding="10px" width="70%" align="center"> <tr> <th>id</th> <th>tstr</th> </tr> <c:forEach items="${testList }" var="t"> <tr onclick="userInfo('${t.id}','${t.tstr}')"> <td>${t.id }</td> <td>${t.tstr }</td> </tr> </c:forEach> </table> </div> <script type="text/javascript"> function userInfo(id,tstr){ alert("id:"+id+";tstr:"+tstr+"."); } </script> </body> </html>

    6  效果

    7  结语

    世上本没有脏话,程序写多了就有了。

    最新回复(0)