ssm框架(springmvc+mybatis+mysql)开发环境搭建配置及实例开发

一、ssm原理解析

首先springmvc的基础架构,需要单独详细解释。可以参考下面这篇文章,也可以在B站上找找黑马的培训视频,讲解的很详细。

https://www.cnblogs.com/xiaoxi/p/6164383.html

需求背景:

要设计一个项目,当用户登陆首页的时候,提示让你输入用户名和密码,输入正确,则跳转页面,显示你的序号和姓名。输入错误,则提示密码错误,重新输入。

判断用户名密码正确与否,是根据已经存在数据库中的表的数据,如果输入的数据存在表中,即正确,否则错误。

二、ssm环境解释

这里讲一下如何本人的开发环境:

jdk: 1.8.0_191

开发工具:Mac Idea

Tomcat: 9.0.12

其实开发环境无所谓,只要各个开发版本的新旧差异不是特别大,就行。别一个三四年前的版本,一个最新版,这中情况会出现一些未知的错误。

三、创建项目

首先新建一个maven项目,直接一步步的next就行了。然后新建一些文件目录,把工程结构设计好,设计如下。

其中有几个暂时没用,为了以后设计的。主要是:

controller层,mapper层,pojo层,service层和view层

四、详细层设计

接下来把所有文件的具体代码列出来。按照我个人的理解,依次介绍:

1. pojo层

主要是把实体抽象出来,有人也给叫做实体层Entity

只定义一个User类,这个用户必须有序号,姓名,密码和年龄这几项,都是需求需要的。

package com.lijuntao.springmvc.pojo;
import javax.persistence.Entity;

@Entity
public class User {
    private int id;
    private String name;
    private String password;
    private int age;
    //如果没有无参构造器,则报错,无法装载pojo
    public User() {
        // TODO Auto-generated constructor stub
    }
    public int getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {

        this.password = password == null ? null : password.trim();
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public User(String username, String password, int age) {
        super();
        this.name = username;
        this.password = password;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", userName=" + name + ", password="
                + password + ", age=" + age + "]";
    }

}

2. Mapper层

有的文章也把它叫做DAO层,用来持久化数据,主要是先定义一个用户的DAO层接口,再把它实现。

DAO层接口:UserMapper

package com.lijuntao.springmvc.mapper;
import com.lijuntao.springmvc.pojo.User;
import org.apache.ibatis.annotations.Param;
import javax.persistence.Entity;

@Entity
public interface UserMapper {

//重点说明,这里一定要有@Param("name"),因为这样,在xml文件中查询数据库的时候,才能找到这个条件
    User findUser(@Param("name") String name,@Param("password") String password);

    User getUserById(int id);
}

DAO层接口的实现:UserMapperImpl

package com.lijuntao.springmvc.mapper.impl;

import com.lijuntao.springmvc.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import com.lijuntao.springmvc.mapper.UserMapper;


public class UserMapperImpl implements UserMapper{
//一定要有@Autowired,注解开发,这样后面的handler适配器才能找到对应的mapper
    @Autowired
    UserMapper userMapper;
    public User findUser(String name,String password){
         return userMapper.findUser(name, password);
    }

    public User getUserById(int id){
        return userMapper.getUserById(id);
    }
}

UserMapper对应的xml文件是UserMapper.xml文件,主要是把数据库中查到的数据注入到DAO层

UserMapper.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.lijuntao.springmvc.mapper.UserMapper">

    <select id="findUser"  resultType="com.lijuntao.springmvc.pojo.User">
        <if test="name != null and name !='' and password != null and password !=''">
            SELECT * FROM user_t WHERE name='${name}' and password='${password}'
        </if>
    </select>

    <select id="getUserById" parameterType="int" resultType="com.lijuntao.springmvc.pojo.User">
        <if test="id !=null">
            SELECT * FROM user_t WHERE id='${id}'
        </if>
    </select>
</mapper>

3. service层

主要是UserService及其实现,用来进行业务逻辑的处理。

UserService:

package com.lijuntao.springmvc.service;
import com.lijuntao.springmvc.pojo.User;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public interface UserService {
    /**
     * @param name
     * @param password
     * @return
     */
    User findUser(String name, String password) ;

    User getUserById(int id);
}

UserServiceImpl:

package com.lijuntao.springmvc.service.impl;

import com.lijuntao.springmvc.mapper.UserMapper;
import com.lijuntao.springmvc.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import com.lijuntao.springmvc.service.UserService;
import org.springframework.stereotype.Service;

/**
 *
 */
@Service
public class UserServiceImpl implements UserService{

    @Autowired
    private UserMapper usi;

    public User findUser(String name, String password)  {
        boolean flag = checkString(name,1,10)&&checkString(password,1,10);
        if (!flag)
            return null;
        return usi.findUser(name,password);
    }
    private boolean checkString(String str,int minL,int maxL){
        return str!=null&&str.length()>=minL&&str.length()<=maxL;
    }

    public User getUserById(int id) {
        // TODO Auto-generated method stub
        return usi.getUserById(id);
    }
}

4. controller层

主要是如何拦截到URL后,如何执行操作

IndexController,表示拦截到首页的URL时,返回index.jsp页面上。

package com.lijuntao.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class IndexController {

    @RequestMapping
    public String index() {
        return "index";
    }

}

UserLogin:因为首页就提示要进行密码验证登录,所以当提交登录操作时,如何处理,这个controller说明了。

package com.lijuntao.springmvc.controller;

import com.lijuntao.springmvc.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.lijuntao.springmvc.service.UserService;

@Controller
@RequestMapping("/user")
public class UserLogin {

    @Autowired
    UserService userService;

    @RequestMapping("/login")
    @ResponseBody
    public ModelAndView login(String name, String password){
        //String uname = request.getParameter("name");
        //String upassword = request.getParameter("password");
        //用两种方式都行
        ModelAndView modelAndView;
        try {
            //先判断用户名是否为空,是否符合定义的长度、大小写规则
            //如果符合规则,就finduser
            User user = userService.findUser(name,password);
            //System.out.println("------------------" + user.getId());
            //System.out.println("------------------" + user.getName());
            //如果 user.getId()=0
            if(user!=null){
                modelAndView = new ModelAndView("hello");
                modelAndView.addObject("info","密码正确");
                modelAndView.addObject("id",user.getId());
                modelAndView.addObject("name",user.getName());
            }else {
                modelAndView = new ModelAndView("login");
            }

        } catch (Exception e) {
            e.printStackTrace();
            modelAndView = new ModelAndView("login");
            modelAndView.addObject("info","您的账号或密码错误,请输入正确的账号和密码");
        }
        return modelAndView;
    }
}

5. view层:

这里面有三个页面,index表示首页,hello表示登录成功,login表示还需要再重新登录

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<title>主页</title>
<body>
<h2>请先登录</h2>
<form action="/user/login" method="post">
    <input type="text" name="name" value="admin"><br>
    <input type="password" name="password" value="admin"><br>
    <input type="submit" value="登录">
</form>
</body>
</html>

hello.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<title>欢迎${name}</title>
<h2>${info}</h2>
<body>
<table>
    <tr>
        <th>id</th>
        <th>name</th>
    </tr>
    <tr>
        <td>${id}</td>
        <td>${name}</td>
    </tr>
</table>
</body>
</html>

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>

<body>
<h1>密码错误,请重新登录</h1>
<form action="/user/login" method="post">
    <h2>${info}</h2>
    <input type="text" name="name"><br>
    <input type="password" name="password"><br>
    <input type="submit" value="登录">
</form>
</body>
</html>

五:配置文件:

1. 首先是maven的pom.xml文件,其实网上随便找一下都是这个文件,缺什么补什么即可

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<!-- $Id: pom.xml 642118 2008-03-28 08:04:16Z reinhard $ -->
<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>
  <packaging>war</packaging>

  <name>springmvc</name>
  <groupId>com.lijuntao</groupId>
  <artifactId>springmvc</artifactId>
  <version>1.0-SNAPSHOT</version>




  <build>
    <plugins>
      <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>maven-jetty-plugin</artifactId>
      <version>6.1.5</version>
      <configuration>
        <webAppSourceDirectory>src/main/webapp</webAppSourceDirectory>
        <scanIntervalSeconds>3</scanIntervalSeconds>
        <contextPath>/study-web</contextPath><!-- 英文状态 -->
        <connectors>
          <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
            <port>8088</port>
          </connector>
        </connectors>
      </configuration>
      </plugin>
    </plugins>
  </build>


  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

    <!-- spring版本号 -->
    <spring.version>4.2.3.RELEASE</spring.version>

    <!-- mybatis版本号 -->
    <mybatis.version>3.2.8</mybatis.version>

    <!-- mysql驱动版本号 -->
    <mysql-driver.version>5.1.29</mysql-driver.version>

    <!-- log4j日志包版本号 -->
    <slf4j.version>1.7.18</slf4j.version>
    <log4j.version>1.2.17</log4j.version>

    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>



  <url>http://maven.apache.org</url>


<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.2</version>
    </dependency>


    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>8.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.2.3.RELEASE</version>
    </dependency>


    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.2.2.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.2.2.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>4.1.9.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>4.2.1.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.2.3.release</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>4.1.9.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.2.3.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.1.9.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.2</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>

    <dependency>
      <groupId>org.javassist</groupId>
      <artifactId>javassist</artifactId>
      <version>3.17.1-GA</version>
    </dependency>

    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>2.2.2</version>
    </dependency>

    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>

    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>


    <dependency>
      <groupId>com.oracle</groupId>
      <artifactId>ojdbc6</artifactId>
      <version>11.2.0.3</version>
      <scope>test</scope>
    </dependency>


    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.12</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-config</artifactId>
      <version>3.1.4.RELEASE</version>
    </dependency>
    <!-- 添加spring核心依赖 -->


    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-oxm</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- 添加数据库连接池依赖 -->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.2.2</version>
    </dependency>

    <!-- 添加fastjson -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.1.41</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>

    <!-- log end -->
    <!-- 映入JSON -->
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.8.0</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.8.0</version>
    </dependency>

    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>

    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.9</version>
    </dependency>



  </dependencies>

</project>

2. 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">

  <display-name>Archetype Created Web Application</display-name>


  <!-- log4j.properties 配置 -->
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.properties</param-value>
  </context-param>
  <context-param>
    <param-name>rootLevel</param-name>
    <param-value>DEBUG</param-value>
  </context-param>

  <context-param>
    <param-name>loggingLevel</param-name>
    <param-value>INFO</param-value>
  </context-param>

  <!-- 配置log4j.xml监听器 -->
  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>


  <!-- 编码过滤器 -->
  <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监听器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>


  <!-- 防止spring内存溢出监听器,比如quartz -->
  <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:spring-mvc.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>
    <!-- 此处也可以配置成 *.do 形式 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>/</welcome-file>
  </welcome-file-list>

  <!-- session配置 -->
  <session-config>
    <session-timeout>15</session-timeout>
  </session-config>



</web-app>

3. 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:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd
                        http://www.springframework.org/schema/tx
                        http://www.springframework.org/schema/tx/spring-tx.xsd">

<!-- 自动扫描 -->
<context:component-scan base-package="com.lijuntao.springmvc"/>

<!-- 第一种方式:加载一个properties文件,引入jdbc配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="classpath:jdbc.properties"/>
</bean>


<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
  <property name="driverClassName" value="${driver}"/>
  <property name="url" value="${url}"/>
  <property name="username" value="${username}"/>
  <property name="password" value="${password}"/>
  <!-- 初始化连接大小 -->
  <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和spring完美整合,不需要mybatis的配置映射文件,mapperLocations配置**Mapper.xml文件位置,configLocation配置mybatis-config文件位置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/>
  <!-- 自动扫描mapping.xml文件 -->
  <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
  <property name="configLocation"  value="classpath:mybatis/mybatis-config.xml" />

</bean>

<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.lijuntao.springmvc.mapper"/>
</bean>


<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource"/>
</bean>

<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

4. 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:p="http://www.springframework.org/schema/p"
       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-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/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">



    <mvc:annotation-driven/>
    <!-- 自动扫描  @Controller 设置使用注解的类所在的jar包-->
    <context:component-scan base-package="com.lijuntao.springmvc.controller"/>

    <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
    <bean id="mappingJacksonHttpMessageConverter"
          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>
    <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJacksonHttpMessageConverter"/> <!-- JSON转换器 -->
            </list>
        </property>
    </bean>


    <!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp"/>
    </bean>

    <!-- 文件上传配置 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 默认编码 -->
        <property name="defaultEncoding" value="UTF-8"/>
        <!-- 上传文件大小限制为31M,31*1024*1024 -->
        <property name="maxUploadSize" value="32505856"/>
        <!-- 内存中的最大值 -->
        <property name="maxInMemorySize" value="4096"/>
    </bean>

</beans>

5. log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <!--
    - This is a sample configuration for log4j.
    - It simply just logs everything into a single log file.
    - Note, that you can use properties for value substitution.
    -->
  <appender name="CORE" class="org.apache.log4j.FileAppender">
    <param name="File"   value="${log4j.appender.File.File}" />
    <param name="Append" value="false" />
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d %-5p %t %c - %m%n"/>
    </layout>
  </appender>

  <root>
    <priority value="${rootLevel}"/>
    <appender-ref ref="CORE"/>
  </root>
</log4j:configuration>

6. mybatis-config.xml 是关于mybatis的配置,主要因为是以前手动配置时需要,现在自动扫描不需要了,所以加进来只是防止缺文件报错,其实没有使用。

<?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>
</configuration>

六、需要的参数信息,因为需要的太多,所以用两个properties文件进行存储,方便统一管理

1.jdbc.properties

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/springmvc
username=root
password=admin123
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000

2.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/ssm.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

3. 数据库中建表user_t的语句

CREATE TABLE `user_t` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(40) DEFAULT NULL,
  `password` varchar(255) NOT NULL,
  `age` int(4) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

总结:

致此,以上必须的文件都已经备齐了,目录里面还有一些没有介绍的,是本文里面没有使用的。不需要介绍。直接利用maven进行install,生成war包,发布到tomcat,就可以访问了

首页:localhost:8080

重新登录页:localhost:8080/user/login

登录成功hello页:也是localhost:8080/user/login,只是页面上返回的信息不一样而已。

猜你喜欢

转载自blog.csdn.net/a627082796/article/details/88558992
今日推荐