详细过程利用Maven构建SSM框架

使用开发工具和数据库
idea 、 mysql
数据库脚本(只创建一个简单的表,用于说明)
SET FOREIGN_KEY_CHECKS=0;


– Table structure for t_base_user


DROP TABLE IF EXISTS t_base_user;
CREATE TABLE t_base_user (
id varchar(18) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
loginname varchar(50) DEFAULT NULL,
PASSWORD varchar(18) DEFAULT NULL,
username varchar(18) DEFAULT NULL,
phone varchar(18) DEFAULT NULL,
address varchar(255) DEFAULT NULL,
isControl varchar(255) NOT NULL COMMENT ‘0,表示允许通过。1 表示不允许通过’,
PRIMARY KEY (id),
UNIQUE KEY loginname (loginname)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


– Records of t_base_user


INSERT INTO t_base_user VALUES (‘1414001’, ‘lau’, ‘1234567’, ‘zhao’, ‘13645547256’, ‘南京江宁区’, ‘0’);
INSERT INTO t_base_user VALUES (‘1414002’, ‘Jackie’, ‘1234567’, ‘liuzhao’, ‘17191182548’, ‘南京市雨花区’, ‘0’);
使用的jar包
pom.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<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.lau</groupId>
  <artifactId>IntegrationSystem</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>IntegrationSystem Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <spring.version>4.1.4.RELEASE</spring.version>
    <jackson.version>2.5.0</jackson.version>
  </properties>

  <dependencies>
    <!--<dependency>
      <groupId>org.junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.7</version>
      <scope>test</scope>
    </dependency>-->
    <dependency>
      <groupId>aopalliance</groupId>
      <artifactId>aopalliance</artifactId>
      <version>1.0</version>
    </dependency>
    <!--  分页助手 -->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.2</version>
    </dependency>
    <!--代理-->
    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>3.2.5</version>
    </dependency>
    <dependency>
      <groupId>asm</groupId>
      <artifactId>asm</artifactId>
      <version>3.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.0</version>
    </dependency>
    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>3.2.5</version>
    </dependency>
    <!-- spring -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</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-tx</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-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>

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

    <!-- mybatis 包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.8</version>
    </dependency>

    <!--mybatis spring 插件 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.2.2</version>
    </dependency>

    <!-- mysql连接 -->

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


    <!-- 数据源 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.12</version>
    </dependency>

    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.4</version>
    </dependency>

    <!-- log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.6.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.6.2</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.25</version>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.25</version>
      <scope>test</scope>
    </dependency>

    <!-- servlet -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>3.0-alpha-1</version>
      <scope>provided</scope>
    </dependency>

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

    <!-- json -->
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.3</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>${jackson.version}</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>${jackson.version}</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <!-- 文件上传 -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.2.2</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.2.2</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.2</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.5.0</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>IntegrationSystem</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>


  </build>
</project>

项目工程目录设计(前期暂时这样,后面可能会考虑优化目录设计)

在这里插入图片描述
在这里插入图片描述

配置文件(重点)

Db.properties主要是用于配置连接数据库

dataSource.driverClass=com.mysql.jdbc.Driver
dataSource.jdbcUrl=jdbc:mysql://127.0.0.1:3306/lau
dataSource.user=******
dataSource.password=******
dataSource.maxPoolSize=20
dataSource.maxIdleTime=1000
dataSource.minPoolSize=6
dataSource.initialPoolSize=5
dataSource.maxWait=9999

log4j.properties主要用于配置日志记录输出格式(具体配置和学习使用,请自行研究学习)

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  

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>
    <!-- 读取 对应的 映射文件-->
    <!-- resource就是某一个映射文件的路径 -->
    <mappers >
        <mapper resource="com/lau/module/SqlMapper/mybatis/StudentMapper.xml"/>
        <mapper resource="com/lau/module/SqlMapper/login/UserMapper.xml"></mapper>
    </mappers>
</configuration>

applicationContext.xml(Spring的配置文件,在该文件中配置数据源、添加事务支持、开启事务注解、配置Mybatis工厂、进行Mapper代理开发以及指定扫描包)

<?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/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!-- 引入配置文件 -->
    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:Db.properties" />
    </bean>
    <!--配置数据源-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
        <property name="driverClassName" value="${dataSource.driverClass}" />
        <property name="url" value="${dataSource.jdbcUrl}" />
        <property name="username" value="${dataSource.user}" />
        <property name="password" value="${dataSource.password}" />
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="${dataSource.initialPoolSize}"></property>
        <!-- 连接池最大数量 -->
        <property name="maxActive" value="${dataSource.maxPoolSize}"></property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="${dataSource.maxIdleTime}"></property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="${dataSource.minPoolSize}"></property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="${dataSource.maxWait}"></property>
    </bean>
    <!--添加事务支持-->
    <bean id ="txManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--开启事务注解-->
    <tx:annotation-driven transaction-manager="txManager"/>
    <!--配置Mybatis工厂,同时指定数据源,并与mybatis完美结合-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!--configLocation的属性值为mybatis的核心配置文件 mybatis-config.xml-->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>
    <!--在会话工厂中取出SqlSessionTemplate这个对象-->
    <bean id="sqlsession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg  ref="sqlSessionFactory" />
    </bean>
    <!--Mapper代理开发,使用Spring自动扫描Mybatis的接口并装配
    (Spring将指定包中的所有被@Mapper注解标注的接口自动装配为Mybatis的映射接口)-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--mybatis-spring 组件的扫描器-->
        <property name="basePackage" value="com.lau.module"></property>
    </bean>
    <!--指定需要扫描的包(包括子包),使注解生效-->
    <context:component-scan base-package="com.lau.module"></context:component-scan>

</beans>


springmvc-servlet.xml(该配置文件放在WEB-INF目录下面与web.xml文件目录同级)
	SpringMVC的核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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/context
    http://www.springframework.org/schema/context/spring-context.xsd
    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-3.2.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--使用扫描机制配置扫描包 -->
    <context:component-scan base-package="com.lau.module.*"></context:component-scan>
    <!--配置视图解析器-->
    <bean id="internalResourceViewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <!--后缀-->
        <property name="suffix" value=".jsp" />
    </bean>
    <!-- REST MVC -->
    <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
        <mvc:message-converters>
            <bean id="jackson2HttpMessageConverter"
                  class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <!--<value>text/html;charset=UTF-8</value>-->
                        <value>application/json;charset=UTF-8</value>
                        <!--<value>application/xml;charset-UTF-8</value>-->
                    </list>
                </property>
            </bean>
            <bean id="stringHttpMessageConverter"
                  class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <!--<value>text/plain;charset=UTF-8</value>-->
                        <!--<value>text/html;charset=UTF-8</value>-->
                        <bean class="org.springframework.http.MediaType">
                            <constructor-arg index="0" value="text" />
                            <constructor-arg index="1" value="plain" />
                            <constructor-arg index="2" value="UTF-8" />
                        </bean>
                    </list>
                </property>
            </bean>
            <bean id="formHttpMessageConverter"
                  class="org.springframework.http.converter.FormHttpMessageConverter"/>
            <!--<bean id="marshallingConverter"-->
            <!--class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"/>-->
        </mvc:message-converters>
    </mvc:annotation-driven>
    <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
        <property name="favorPathExtension" value="false" />
        <property name="favorParameter" value="false" />
        <property name="ignoreAcceptHeader" value="false" />
        <property name="mediaTypes" >
            <value>
                html=text/html
                json=application/json
            </value>
        </property>
    </bean>
    <!--配置静态资源加载-->
    <mvc:resources mapping="/image/**" location="/image/"/>
    <mvc:resources mapping="/JS/**" location="/JS/"/>
    <mvc:resources mapping="/CSS/**" location="/CSS/"/>
</beans>
	
    web.xml配置文件
      WEB-INF目录下创建,在该文件中实例化ApplicationContext容器、启动Spring容器、配置前端控制器DispatcherServlet以及字符编码过滤器
 <?xml version="1.0" encoding="UTF-8"?>
 <web-app version="3.0"
     xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd">

    <!--实例化ApplicationContext容器-->
    <context-param>
        <!--加载applicationContext容器-->
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <!--指定以ContextLoaderListener方式启动Spring容器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!--配置DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!--避免中文乱码-->
    <filter>
        <filter-name>characterEncodingFilter</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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <welcome-file-list>
        <welcome-file>/WEB-INF/jsp/login.jsp</welcome-file>
    </welcome-file-list>
</web-app>

直接上代码(login目录下的,这里并没有实现登陆,只是用这个测试工程搭建是否ok,后期更新会实现登陆功能)
domain层代码(页面领域对象)

package com.lau.module.login.domain;

/**
  * @Author lau
  * @Description TODO
  * @Date 18:47 2019/5/12
  * @Param $param
  * @return
  **/
public class UserDomain {
    //编号
    private String id;
    //登陆用户名
    private String loginame;
    //用户密码
    private String passWord;
    //持有者
    private String userName;
    //联系方式
    private String phone;
    //地址
    private String address;
    //是否禁用  0 表示不禁用 ; 1 表示禁用
    private String isControl ;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getLoginame() {
        return loginame;
    }

    public void setLoginame(String loginame) {
        this.loginame = loginame;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getIsControl() {
        return isControl;
    }

    public void setIsControl(String isControl) {
        this.isControl = isControl;
    }
}

Dao层代码:

package com.lau.module.login.dao;

import com.lau.module.login.domain.UserDomain;
import org.mybatis.spring.annotation.MapperScan;

import java.util.List;
/**
  * @Author lau
  * @Description TODO
  * @Date 22:53 2019/5/13
  * @Param $param
  * @return 
  **/     
@MapperScan
public interface UserDomainDao {

    List<UserDomain> selectUserByUname(UserDomain uobj);
}

service层代码:

package com.lau.module.login.service;

import com.lau.module.login.domain.UserDomain;

import java.util.List;
/**
  * @Author lau
  * @Description TODO
  * @Date 22:53 2019/5/13
  * @Param $param
  * @return 
  **/     
public interface UserService {

    List<UserDomain> selectUserByUname(UserDomain uobj);
}



 
package com.lau.module.login.service.impl;

import com.lau.module.login.dao.UserDomainDao;
import com.lau.module.login.domain.UserDomain;
import com.lau.module.login.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @ClassName UserServiceImpl
 * @Description TODO
 * @Author l_zha
 * @Date 19:52
 * @Version 1.0
 **/
@Service("UserService")
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDomainDao userDao;
    @Override
    public List<UserDomain> selectUserByUname(UserDomain uobj) {
        return userDao.selectUserByUname(uobj);
    }
}

action层

package com.lau.module.login.action;

import com.lau.module.login.dao.UserDomainDao;
import com.lau.module.login.domain.UserDomain;
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 org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * @ClassName UserController
 * @Description TODO
 * @Author l_zha
 * @Date 19:55
 * @Version 1.0
 **/
@Controller
@RequestMapping(value = "/userController")
public class UserController {

    @Autowired
    private UserDomainDao userDao ;

    @RequestMapping(value = "/select",method = RequestMethod.POST)
    public String Select(UserDomain uobj, Model model)
    {
        uobj.setLoginame("jackie");
        uobj.setPassWord("1234567");
        List<UserDomain> userDomainsList = userDao.selectUserByUname(uobj);
        model.addAttribute("userList", userDomainsList);
        return "userList";
    }
    @ResponseBody
    @RequestMapping(value = "/select2",method = RequestMethod.POST)
    public String rebackTest()
    {
        return "strBackInfo";
    }
}

sql映射文件UserMapper.xml(mybatis高级查询语法后期更新)

<?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.lau.module.login.dao.UserDomainDao">

    <select id="selectUserByUname" parameterType="com.lau.module.login.domain.UserDomain" resultType="com.lau.module.login.domain.UserDomain" >
        SELECT
        *
        FROM
        t_base_user t
        WHERE 1=1
        
    </select>
</mapper>

login.jsp(界面代码只是参考,具体引用的样式代码和图片资源就不提供了)

<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta charset="UTF-8">
	<title>loginPage</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="stylesheet" href="../../CSS/style.css">

    <link rel="stylesheet" href="../../CSS/login.css">
</head>
<body>
	<div style="width:100%;height: 100%; background-image:url('../../image/4.jpg')">
		<div class="page-container">
		    <form id="form" action="${pageContext.request.contextPath }/userController/select" method="post">
		        <label for="username" style="background-image: url('../../image/username.png')"> </label>
		        <input type="text" id="username" name="username" class="username" placeholder="UserName">
		        <div id="user_error" class="error"><span>+</span></div>
		        <label for="password" style="background-image: url('../../image/pwd.png')"> </label>
		        <input type="password" id="password" name="password" class="password" placeholder="password">
		        <div id="pwd_error" class="error"><span>+</span></div>
		       <!--  <button id="login" type="submit">登录</button> -->
		        <input id="login" type="submit" value="登录" />
		    </form>
		</div>
	</div>
    <!-- Javascript -->
	<script src="../../JS/jquery-1.8.2.min.js"></script>
	<script src="../../JS/alert.js"></script>
	<script src="../../JS/login.js"></script>
</body>
</html>

userList.jsp

  <%--
      Created by IntelliJ IDEA.
      User: l_zha
      Date: 2019/5/12
      Time: 20:05
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"   pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <!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>
        用户信息<br>
        <c:forEach items="${userList}" var="user">
            ${user.id}&nbsp;&nbsp;&nbsp;&nbsp;
            ${user.loginame}&nbsp;&nbsp;&nbsp;&nbsp;
            ${user.phone}
            ${user.address}
            ${user.userName}<br>
        </c:forEach>
    </body>
    </html>

界面效果图:
在这里插入图片描述
在这里插入图片描述

遇到的问题
1.资源加载不到?
查询相关资料后,了解到需要将项目的资源配置在pom.xml中,上面的pom.xml文件中加入…顺利解决问题

2.springMVC报WARNING: No mapping found for HTTP request with URI [/userController/select] in DispatcherServle
可能导致这种情况发生的原因有多种情况,网上也有许多相关方面的说明,我这里主要是web.xml中配置的原因,在查阅相关资料后吗,在*.servlet.xml中添加如下代码顺利解决此问题。

  <!-- REST MVC -->
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
    <mvc:message-converters>
        <bean id="jackson2HttpMessageConverter"
              class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <!--<value>text/html;charset=UTF-8</value>-->
                    <value>application/json;charset=UTF-8</value>
                    <!--<value>application/xml;charset-UTF-8</value>-->
                </list>
            </property>
        </bean>
        <bean id="stringHttpMessageConverter"
              class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <!--<value>text/plain;charset=UTF-8</value>-->
                    <!--<value>text/html;charset=UTF-8</value>-->
                    <bean class="org.springframework.http.MediaType">
                        <constructor-arg index="0" value="text" />
                        <constructor-arg index="1" value="plain" />
                        <constructor-arg index="2" value="UTF-8" />
                    </bean>
                </list>
            </property>
        </bean>
        <bean id="formHttpMessageConverter"
              class="org.springframework.http.converter.FormHttpMessageConverter"/>
        <!--<bean id="marshallingConverter"-->
        <!--class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"/>-->
    </mvc:message-converters>
</mvc:annotation-driven>
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false" />
    <property name="favorParameter" value="false" />
    <property name="ignoreAcceptHeader" value="false" />
    <property name="mediaTypes" >
        <value>
            html=text/html
            json=application/json
        </value>
    </property>
</bean>

3.需要注意的是在写sql映射文件时,sql中相关字段的名称需要和domain中的页面领域对象属性保持一致,否则会报Type handler was null on parameter mapping for property …

由于对框架和maven的项目掌握的不是很厉害,这里是自主学习搭建的框架,后期自己会在这个框架上做相应的研究学习

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值