Java框架技术之SSM框架整合的小练习(只有登录系统)

实验目的:

  1. 掌握SSM三大框架整合
  2. 掌握简单的前后台交互逻辑 

实验内容:

  参考上课教材书本第15章,完成15.4的用户登录模块的功能

实验仪器设备(实验环境):

运行环境:Windows 10

开发工具:IntelliJ IDEA 或 Eclipse

运行环境:JDK1.8


 

项目结构

 

Controller  层

UserController 类

package com.spring.ssm.controller;

import com.spring.ssm.domain.User;
import com.spring.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

@Controller
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/login")
    public String login(User user, HttpServletRequest request) {
        try {
            User u = userService.login(user);
            if (u != null) {
                request.getSession().setAttribute("USER_SESSION", u);
                return "redirect:/admin/main.jsp";
            }
            request.setAttribute("msg", "用户名或密码错误");
            return "forward:/admin/login.jsp";
        } catch (Exception e) {
            e.printStackTrace();
            request.setAttribute("msg", "系统错误");
            return "forward:/admin/login.jsp";
        }
    }
    @RequestMapping("/tomainpage")
    public String tomainpage() {
        return "main";
    }

    @RequestMapping("/main")
    public String main(){
        return "/admin/main.jsp";
    }
    @RequestMapping("/logout")
    public String logout(HttpServletRequest request){
        try{
            HttpSession session= request.getSession();
            session.invalidate();
            return "forward:/admin/login.jsp";

        }catch (Exception e){
            e.printStackTrace();
            request.setAttribute("msg", "系统错误");
            return "forward:/admin/login.jsp";
        }
    }

}

Dao层:

UserMapper类:

package com.spring.ssm.dao;

import com.spring.ssm.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Service;
@Mapper
public interface UserMapper {
    @Select("select * from user where email = #{email} and password = #{password} and status != '1'")
    @Results(id = "userMap", value = {
            @Result(id = true,column = "id", property = "id"),
            @Result(column = "name",property = "name"),
            @Result(column = "password",property = "password"),
            @Result(column = "email",property = "email"),
            @Result(column = "role",property = "role"),
            @Result(column = "status",property = "status"),
    })
    User login(User user);
}

Domain 实体类:

User 类:

package com.spring.ssm.domain;

public class User {
    private int id;
    private String name;
    private String password;
    private String email;
    private String role;
    private String status;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

interceptor 拦截器层

ResourceInterceptor类:

package com.spring.ssm.interceptor;

import com.spring.ssm.domain.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class ResourseInterceptor  extends HandlerInterceptorAdapter {
    public boolean preHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler) throws Exception {
        User user = (User) request.getSession().getAttribute("USER_SESSION");
        String uri = request.getRequestURI();
        if (user != null) {
            return true;
        }
        if (uri.indexOf("login") > 0) {
            return true;
        }
            request.setAttribute("msg", "请先登录");
            request.getRequestDispatcher("/admin/login.jsp").forward(request, response);
            return false;
    }
}

Service层

UserService接口:

package com.spring.ssm.service;

import com.spring.ssm.domain.User;

public interface UserService {
    public User login(User user);
}

 UseServiceImpl类:

package com.spring.ssm.service.impl;

import com.spring.ssm.dao.UserMapper;
import com.spring.ssm.domain.User;
import com.spring.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService
{
    @Autowired
    private UserMapper userMapper;
    @Override
    public User login(User user) {
        return userMapper.login(user);
    }
}

配置文件方面:

resource文件夹

application-dao.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"
       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
   ">
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.spring.ssm.dao"/>
    </bean>
</beans>

application-service:spring Service注解 解析

<?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"
       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">
    <context:component-scan base-package="com.spring.ssm.service"/>
</beans>

配置文件 jdbc.properties

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=root

 spring-mvc.xml : mvc配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="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.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="com.spring.ssm.controller"/>
    <mvc:annotation-driven/>
    <mvc:default-servlet-handler/>
    <mvc:resources mapping="/css/**" location="/css/"/>
    <mvc:resources mapping="/images/**" location="/img/"/>
    <mvc:resources mapping="/js/**" location="/js/"/>
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <!-- 排除哪些请求不经过这个拦截器 -->
            <mvc:exclude-mapping path="/css/**"/>
            <mvc:exclude-mapping path="/js/**"/>
            <mvc:exclude-mapping path="/img/**"/>
            <!-- 装配具体的拦截器 -->
            <bean class="com.spring.ssm.interceptor.ResourseInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

 

实验结果/运行图:

 登录页面

登录成功

注销登录之后 又回到了登录页面

在URL 上继续输入 /tomainpage

出现拦截器 被拦截了

实验总结包括结果分析、问题与解决办法、心得体会、意见与建议等

本次实验旨在深入理解和掌握SSM三大框架(Spring、SpringMVC、MyBatis)的整合,以及前后台交互逻辑的实现。SSM框架是Java企业级开发中常用的技术组合,通过本次实验,我们将能够熟练地在实际项目中应用这些技术。 实验内容主要围绕书本第15章的15.4节,即实现用户登录模块。以下是实验的主要步骤: 首先,我们需要搭建起Spring、SpringMVC和MyBatis这三个框架的基本结构,确保它们能够协同工作。 包括数据库的连接配置、Spring的IoC容器配置、MyBatis的映射器配置等。设计用户登录模块的数据模型、业务逻辑接口及其实现、控制器等。 实现前端页面的表单提交,以及后端对用户名和密码的验证逻辑。 通过实验,成功实现了用户登录模块。用户可以在前端输入用户名和密码,提交后由后端进行验证,并返回相应的登录结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值