maven+springmvc+mybatis基本开发环境搭建

来源:互联网 发布:淘宝如何防止图片被盗 编辑:程序博客网 时间:2024/05/18 01:11

maven+springmvc+mybatis基本开发环境搭建

这是最基本,精简的maven+springmvc+mybatis的开发环境搭建教程,大部分文件都可以直接copy下来使用,如有错误,欢迎指正
所需要的各项依赖的版本就不写了,POM里都有

一、maven配置修改(settings.xml文件修改)

settings.xml文件位于maven根目录conf下,一般修改localRepository、配置mirror和profile就足以满足大部分开发需要。

<?xml version="1.0" encoding="utf-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">    <!--本次存储路径,该路径存储maven下载的文件,可以随便改,不要放在c盘,我这里是在虚拟机里搭建的测试环境,图方便所以放在c盘,你们如何要用就改下这个路径-->    <localRepository>c:/repo</localRepository>    <pluginGroups></pluginGroups>    <proxies></proxies>    <servers></servers>    <mirrors>        <!--把maven库改成阿里的镜像,速度更快-->        <mirror>            <id>alimaven</id>            <mirrorOf>central</mirrorOf>            <name>aliyun maven</name>            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>        </mirror>    </mirrors>    <profiles>        <!--该项是强烈建议配置的,避免运行maven clean的时候导致项目出现问题-->        <profile>            <id>jdk-1.8</id>            <activation>                <activeByDefault>true</activeByDefault>                <jdk>1.8</jdk>            </activation>            <properties>                <!--下面三个1.8可以根据你项目使用的jdk版本修改-->                <maven.compiler.source>1.8</maven.compiler.source>                <maven.compiler.target>1.8</maven.compiler.target>                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>            </properties>        </profile>    </profiles></settings>
二、log4j2配置(log4j2.xml)

日志使用log4j2+slf4j,log4j2基础配置如下,具体配置请参考
http://logging.apache.org/log4j/2.x/manual/configuration.html
将该文件放在项目WEB-INF/classes目录下

<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN">    <!--全局日志级别,低于此级别的日志不会被处理和记录-->    <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY" />    <Appenders>        <!--配置console appender,将日志输出到console-->        <Console name="Console" target="SYSTEM_OUT">            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />        </Console>    </Appenders>    <Loggers>        <!--必须项,根logger,此处配置为debug级别-->        <Root level="debug">            <AppenderRef ref="Console" />        </Root>    </Loggers></Configuration>
三、POM,这里都是最基本的依赖,无任何多余依赖,(security依赖估计你们用不到,就暂时注释掉了)

这里的配置都是最基础依赖,基本没有任何多余依赖,可直接拿去用

<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>org.szq</groupId>    <artifactId>learn</artifactId>    <packaging>war</packaging>    <version>0.0.1-SNAPSHOT</version>    <name>learn Maven Webapp</name>    <url>http://maven.apache.org</url>    <properties>        <!-- <spring.security>4.2.2.RELEASE</spring.security> -->        <org.apache.taglibs>1.2.5</org.apache.taglibs>        <org.apache.logging.log4j>2.9.0</org.apache.logging.log4j>    </properties>    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework</groupId>                <artifactId>spring-framework-bom</artifactId>                <version>4.3.10.RELEASE</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>    <dependencies>        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>        </dependency>        <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <scope>test</scope>        </dependency>        <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jdbc</artifactId>        </dependency>        <!-- <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${spring.security}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${spring.security}</version>             </dependency> -->        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->        <dependency>            <groupId>com.fasterxml.jackson.core</groupId>            <artifactId>jackson-databind</artifactId>            <version>2.9.0</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>3.4.5</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis-spring</artifactId>            <version>1.3.1</version>        </dependency>        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.44</version>        </dependency>        <!-- https://mvnrepository.com/artifact/junit/junit -->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.12</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>slf4j-api</artifactId>            <version>1.7.25</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->        <dependency>            <groupId>org.apache.logging.log4j</groupId>            <artifactId>log4j-slf4j-impl</artifactId>            <version>${org.apache.logging.log4j}</version>        </dependency>        <dependency>            <groupId>org.apache.logging.log4j</groupId>            <artifactId>log4j-api</artifactId>            <version>${org.apache.logging.log4j}</version>        </dependency>        <dependency>            <groupId>org.apache.logging.log4j</groupId>            <artifactId>log4j-core</artifactId>            <version>${org.apache.logging.log4j}</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-spec -->        <dependency>            <groupId>org.apache.taglibs</groupId>            <artifactId>taglibs-standard-spec</artifactId>            <version>${org.apache.taglibs}</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->        <dependency>            <groupId>org.apache.taglibs</groupId>            <artifactId>taglibs-standard-impl</artifactId>            <version>${org.apache.taglibs}</version>        </dependency>        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>1.2.38</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jdbc -->        <dependency>            <groupId>org.apache.tomcat</groupId>            <artifactId>tomcat-jdbc</artifactId>            <version>8.5.20</version>        </dependency>    </dependencies>    <build>        <finalName>learn</finalName>    </build></project>
四、web.xml配置

web.xml配置不必多说,具体配置请自行搜索相关教程。
关于CharacterEncodingFilter编码过滤器的作用,可以看这里
http://blog.csdn.net/lianjunzongsiling/article/details/77926370

<?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">    <display-name>Archetype Created Web Application</display-name>    <!--ContextLoaderListener所需配置 -->    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath*:applicationContext.xml</param-value>    </context-param>    <!--配置spring ContextLoaderListener,必须项 -->    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>    <!-- characterEncodingFilter字符编码过滤器 -->    <filter>        <filter-name>characterEncodingFilter</filter-name>        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>characterEncodingFilter</filter-name>        <url-pattern>/</url-pattern>    </filter-mapping>    <!-- springmvc起始配置,配置DispatcherServlet -->    <servlet>        <servlet-name>dispatcherServlet</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextConfigLocation</param-name>            <!--测试项目,所以此处留空,具体原因请查看spring文档 -->            <param-value></param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>dispatcherServlet</servlet-name>        <!--这里是/,不是/* -->        <url-pattern>/</url-pattern>    </servlet-mapping></web-app>
五、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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" 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/mvc        http://www.springframework.org/schema/mvc/spring-mvc.xsd        http://www.springframework.org/schema/tx        http://www.springframework.org/schema/tx/spring-tx.xsd">    <!-- 重要,启用@requestmapping等注解 -->    <mvc:annotation-driven />    <context:component-scan base-package="com.szq.learn.controller" />    <context:component-scan base-package="com.szq.learn.service" />    <!-- 配置datasource -->    <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">        <property name="driverClassName" value="com.mysql.jdbc.Driver" />        <property name="url" value="jdbc:mysql://localhost:3306/learn?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC" />        <property name="username" value="root" />        <property name="password" value="passw0rd" />    </bean>    <!-- 启用事务注解 -->    <tx:annotation-driven transaction-manager="transactionManager" />    <!-- 配置 事务管理器 -->    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <property name="dataSource" ref="dataSource" />    </bean>    <!-- mybatis配置 -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource" />        <property name="mapperLocations" value="classpath*:mybatis_mappers/*.xml" />        <property name="typeAliasesPackage" value="com.szq.learn.vo" />    </bean>    <!-- mybatis映射扫描器 -->    <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <property name="basePackage" value="com.szq.learn.dao" />    </bean>    <!-- jsp解析器 -->    <bean id="jspvr" class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />        <property name="prefix" value="/WEB-INF/jsp/" />        <property name="suffix" value=".jsp" />    </bean></beans>
六、mapper.xml配置(例:UserDao.xml)

将该文件放在WEB-INF/classes/mybatis_mappers目录下,mybatis的mapper配置参考这里
http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html

<?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.szq.learn.dao.UserDao">    <select id="getUserByUid" resultType="UserVO">        SELECT        `id`, `u_name` AS 'uname', `u_password` AS 'upassword', `c_time` AS 'ctime'        FROM        `t_user`        WHERE        `id` = #{uid};    </select></mapper>
七、数据库脚本
CREATE DATABASE `learn`;CREATE TABLE `t_user` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `u_name` varchar(36) NOT NULL DEFAULT '' COMMENT '用户名',  `u_password` varchar(36) NOT NULL DEFAULT '' COMMENT '用户密码',  `c_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '用户注册创建时间',  PRIMARY KEY (`id`),  UNIQUE KEY `uk_u_name` (`u_name`) COMMENT '用户名必须唯一') ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';INSERT INTO `t_user` (`u_name`, `u_password`) VALUES ('admin', 'admin');
八、DAO文件(UserDao.java)
package com.szq.learn.dao;import org.apache.ibatis.annotations.Param;import com.szq.learn.vo.UserVO;public interface UserDao {    /**     * 根据uid查找用户信息     * @param uid     * @return     * @throws Exception      */    public UserVO getUserByUid(@Param("uid") int uid) throws Exception;}
九、service和serviceimpl(UserService.java,UserServiceImpl)
package com.szq.learn.service;import com.szq.learn.vo.UserVO;public interface UserService {    /**     * 根据uid查找用户信息     * @param uid     * @return     * @throws Exception      */    public UserVO getUserByUid(Integer uid) throws Exception;}
package com.szq.learn.service.impl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.szq.learn.dao.UserDao;import com.szq.learn.service.UserService;import com.szq.learn.vo.UserVO;@Servicepublic class UserServiceImpl implements UserService {    @Autowired    private UserDao userDao;    @Override    public UserVO getUserByUid(Integer uid) throws Exception {        return userDao.getUserByUid(uid);    }}
十、bean文件(UserVO.java)
package com.szq.learn.vo;public class UserVO {    private int id;    private String uname;    private String upassword;    private String ctime;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getUname() {        return uname;    }    public void setUname(String uname) {        this.uname = uname;    }    public String getUpassword() {        return upassword;    }    public void setUpassword(String upassword) {        this.upassword = upassword;    }    public String getCtime() {        return ctime;    }    public void setCtime(String ctime) {        this.ctime = ctime;    }    @Override    public String toString() {        return "UserVO [id=" + id + ", uname=" + uname + ", upassword=" + upassword + ", ctime=" + ctime + "]";    }    @Override    public int hashCode() {        final int prime = 31;        int result = 1;        result = prime * result + ((ctime == null) ? 0 : ctime.hashCode());        result = prime * result + id;        result = prime * result + ((uname == null) ? 0 : uname.hashCode());        result = prime * result + ((upassword == null) ? 0 : upassword.hashCode());        return result;    }    @Override    public boolean equals(Object obj) {        if (this == obj)            return true;        if (obj == null)            return false;        if (getClass() != obj.getClass())            return false;        UserVO other = (UserVO) obj;        if (ctime == null) {            if (other.ctime != null)                return false;        } else if (!ctime.equals(other.ctime))            return false;        if (id != other.id)            return false;        if (uname == null) {            if (other.uname != null)                return false;        } else if (!uname.equals(other.uname))            return false;        if (upassword == null) {            if (other.upassword != null)                return false;        } else if (!upassword.equals(other.upassword))            return false;        return true;    }}
十一、控制器(PageController.java)
package com.szq.learn.controller;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import com.szq.learn.service.UserService;@Controllerpublic class PageController {    private Logger logger = LoggerFactory.getLogger(getClass().getSimpleName());    @Autowired    private UserService userService;    @RequestMapping("/index")    public String getIndex(Model model) {        try {            model.addAttribute("user", userService.getUserByUid(1));            return "index";        } catch (Exception e) {            logger.warn("", e);            return "404";        }    }}
八,jsp文件(index.jsp)

该文件放在WEB-INF/jsp下

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><title>index</title></head><body>    <div id="outerContainer">        <h1>welcome, ${user.getUname() }</h1>    </div></body></html>

以上是搭建一个最基础的开发环境所必须的元素,具体如何把这些元素组合成一个可运行的webapp就不多写了,教程很多。


原创不易,转发请注明出处—shizhongqi

原创粉丝点击