SSM:学习以及小服务;

记录学习历程

一. 前期环境搭建

idea2023.2.3 ; tomcat 9.0.13 ;jdk版本8;

jar包如下:

Mybatis框架:mysql-connecto ; mybatis; mybatis-spring;durid

Spring框架:spring-jdbc ;spring-aspect

SpringMVC:servlet-api;spring-webmvc

辅助jar包:fast-json (mvc中返回Object时转换内容为json字符串格式的工具,配合ajax使用)  

相关的配置文件:

mybatis配置文件;spring配置文件;web核心配置文件 ;pom文件依赖和resources标签修改;

架构如下:

mybatis核心配置文件:

(由于使用了druid数据库连接池,因此不需要再mybatis中书写环境变量)

Spring核心配置文件:

web核心配置文件:

pom文件:

(1)jar包:

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

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

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

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.2.15</version>
</dependency>

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

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

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

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

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

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.0</version>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.0</version>
</dependency>

(2)resources标签:

<resource>
  <directory>src/main/resources</directory>
  <includes>
    <include>**/*.xml</include>
  </includes>
</resource>

<resource>
  <directory>src/main/java</directory>
  <includes>
    <include>**/*.xml</include>
  </includes>
</resource>

OK,前期基本环境完事。

二. 开始项目小服务

这里记录下简易版的两种:

十天免登陆服务(cookie实现);令牌机制(会话,过滤器实现)

/**
 * 该方法用于处理用户登陆的请求,并在此基础上实现了简易的登陆服务
 * 十天免登录服务:用户通过储存在本计算机的cookie能够实现十天免登陆服务
 * 令牌机制:通过会话实现,避免恶意登录
 * @param request
 * @param response
 * @return
 */
@RequestMapping("/check.do")
public String check(HttpServletRequest request, HttpServletResponse response){

    int result = 0;
    //免登陆服务:十天免登录

    String empNo = request.getParameter("empNo");
    String eName = request.getParameter("eName");
    String ck = request.getParameter("ck");
    Map map = new HashMap();

    //1.免登录的cookie
    Cookie cookieArray[] = request.getCookies();
    if(cookieArray!=null){
        for (Cookie cookie:cookieArray
             ) {
            //假设给客户派发十天免登录的cookie(“”exam)
            String key = cookie.getName();
            if("exam".equals(key)){

                //令牌机制

                HttpSession session = request.getSession(true);   //token
                //解释:true代表如果请求没有会话则创建一个新的会话
                //     false代表如果没有会话则返回一个null

                return "index";
            }
        }
    }

    //2.第二种,能够正确输入账号密码;在此情况下需要给用户设置一个十天免登陆的cookie
    map.put("empNo",empNo);
    map.put("eName",eName);
    result = loginService.login(map);
    if(result>0){
        if(ck!=null){
            Cookie c = new Cookie("exam",eName); //第一个参数是cookie名,第二个参数是cookie的value
            c.setMaxAge(60*60*24*10);
            response.addCookie(c);
        }
        HttpSession session = request.getSession(true);
        return "index";
    }

    return "error";

令牌的过滤器:

package com.bjpowernode.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebFilter("/*")
public class SafeFilter implements Filter{


    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        String uri = request.getRequestURI();
        if(uri.contains("/login")){
            filterChain.doFilter(servletRequest,servletResponse);
            return;
        }
        HttpSession session = request.getSession(false);  //true为创建新的会话;false为不创建会话并返回null值
        if(session!=null){
           filterChain.doFilter(servletRequest,servletResponse);
        }else{
            request.getRequestDispatcher("/view/error.html").forward(request,servletResponse);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值