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就行了。然后新建一些文件目录,把工程结构设计好,设计如下。

ssm框架(springmvc+mybatis+mysql)开发环境搭建配置及实例开发_第1张图片

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

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





    

    

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" %>

主页

请先登录



hello.jsp

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

欢迎${name}

${info}

id name
${id} ${name}

login.jsp

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


    登录



密码错误,请重新登录

${info}



五:配置文件:

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






  4.0.0
  war

  springmvc
  com.lijuntao
  springmvc
  1.0-SNAPSHOT




  
    
      
      org.mortbay.jetty
      maven-jetty-plugin
      6.1.5
      
        src/main/webapp
        3
        /study-web
        
          
            8088
          
        
      
      
    
  


  
    UTF-8
    UTF-8

    
    4.2.3.RELEASE

    
    3.2.8

    
    5.1.29

    
    1.7.18
    1.2.17

    1.8
    1.8
  



  http://maven.apache.org



    
      junit
      junit
      4.8.2
    


    
      javax
      javaee-api
      8.0
      provided
    

    
      javax.servlet
      javax.servlet-api
      4.0.1
      provided
    

    
      org.springframework
      spring-core
      4.2.3.RELEASE
    


    
      org.springframework
      spring-beans
      4.2.2.RELEASE
    

    
      org.springframework
      spring-context
      4.2.2.RELEASE
    

    
      org.springframework
      spring-tx
      4.1.9.RELEASE
    

    
      org.springframework
      spring-aspects
      4.2.1.RELEASE
    

    
      org.springframework
      spring-context-support
      ${spring.version}
    

    
      org.springframework
      spring-jdbc
      4.2.3.release
    

    
      org.springframework
      spring-test
      4.1.9.RELEASE
    

    
      org.springframework
      spring-web
      4.2.3.RELEASE
    

    
      org.springframework
      spring-webmvc
      4.1.9.RELEASE
    

    
      org.mybatis
      mybatis
      3.2.2
    

    
      org.mybatis
      mybatis-spring
      1.3.0
    

    
      org.javassist
      javassist
      3.17.1-GA
    

    
      cglib
      cglib
      2.2.2
    

    
      c3p0
      c3p0
      0.9.1.2
    

    
      taglibs
      standard
      1.1.2
    

    
      javax.servlet
      jstl
      1.2
    


    
      com.oracle
      ojdbc6
      11.2.0.3
      test
    


    
      mysql
      mysql-connector-java
      8.0.12
    

    
      org.springframework.security
      spring-security-config
      3.1.4.RELEASE
    
    


    
      org.springframework
      spring-oxm
      ${spring.version}
    

    
      org.springframework
      spring-aop
      ${spring.version}
    
    
    
      commons-dbcp
      commons-dbcp
      1.2.2
    

    
    
      com.alibaba
      fastjson
      1.1.41
    

    
    
      log4j
      log4j
      ${log4j.version}
    
    
      org.slf4j
      slf4j-api
      ${slf4j.version}
    
    
      org.slf4j
      slf4j-log4j12
      ${slf4j.version}
    

    
    
    
      org.codehaus.jackson
      jackson-mapper-asl
      1.9.13
    
    
    
      com.fasterxml.jackson.core
      jackson-core
      2.8.0
    
    
    
      com.fasterxml.jackson.core
      jackson-databind
      2.8.0
    

    
      commons-fileupload
      commons-fileupload
      1.3.1
    

    
      commons-io
      commons-io
      2.4
    

    
      commons-codec
      commons-codec
      1.9
    



  


2. web.xml   (重点,重中之重)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!




  Archetype Created Web Application


  
  
    log4jConfigLocation
    classpath:log4j.properties
  
  
    rootLevel
    DEBUG
  

  
    loggingLevel
    INFO
  

  
  
    org.springframework.web.util.Log4jConfigListener
  


  
  
    encodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      UTF-8
    
  
  
    encodingFilter
    /*
  

  
  
    org.springframework.web.context.ContextLoaderListener
  
  
  
    contextConfigLocation
    classpath:applicationContext.xml
  


  
  
    org.springframework.web.util.IntrospectorCleanupListener
  


  
  
    SpringMVC
    org.springframework.web.servlet.DispatcherServlet
    
      contextConfigLocation
      classpath:spring-mvc.xml
    
    1
    true
  
  
    SpringMVC
    
    /
  

  
    /
  

  
  
    15
  



3. applicationContext.xml









  





  
  
  
  
  
  
  
  
  
  
  
  
  
  




  
  
  
  





  





  




4. spring-mvc.xml






    
    
    

    
    
        
            
                text/html;charset=UTF-8
            
        
    
    
    
        
            
                 
            
        
    


    
    
        
        
    

    
    
        
        
        
        
        
        
    

5. log4j.xml






  
  
    
    
    
      
    
  

  
    
    
  

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




六、需要的参数信息,因为需要的太多,所以用两个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,只是页面上返回的信息不一样而已。

你可能感兴趣的:(Java学习,ssm,springmvc,mybatis,mysql,java框架)