百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

通过Spring练习验证登入的功能

toyiye 2024-06-21 12:19 12 浏览 0 评论


通过Spring练习验证登入的功能

第一步、导环境支持的Java包

jar包

导入Java包


第二、编写web.xml(加载Spring的配置文件)

通过监听器实现启动加载



<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!--当tomcat加载web.xml时,把spring 配置文件信息存储放在application对象中 --> <!-- webapplicationcontext 容器, 是ApplicationCntext子接口 --> <!-- 设置Spring文件配置路径--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 加载Spring配置文件 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener></web-app>

第三、写applicationContext.xml配置

1.获取数据源


<!--获取数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/ssm"></property> <property name="username" value="root"></property> <property name="password" value="123456"></property> </bean>

2.创建SpringSql数据对象Factory(Mybatis-spring封装)


<!--Spring帮助创建SQL sessionFactory --> <bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> </bean>


3.扫描器,扫描接口,并创建接口对象



告诉扫描器扫描哪个 包 类型为String类型

告诉扫描器 Mybatis 有session.getmapper工厂对象

类型为----sqlSessionFactory : SqlSessionFactory

<!--扫描器,扫描接口,并创建接口对象 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.wq.mapper"></property> <property name="sqlSessionFactory" ref="factory"></property> </bean>


到此,总体环境搭建完成了


第四、数据库设计


CREATE TABLE users( id INT(10) PRIMARY KEY auto_increment, username VARCHAR(20) UNIQUE, password VARCHAR(20))INSERT INTO users VALUES(DEFAULT,'张三','123')


第五、写逻辑代码

1.创建实体类对象

package com.wq.pojo;public class User { private int id; private String username; private String password;public int getId() { return id;}public void setId(int id) { this.id = id;}public String getUsername() { return username;}public void setUsername(String username) { this.username = username;}public String getPassword() { return password;}public void setPassword(String password) { this.password = password;} }


2.建立mapper接口(注解和配置文件写都是可以的)

package com.wq.mapper;import org.apache.ibatis.annotations.Select;import com.wq.pojo.User;public interface Usersmapper { @Select("select * from users where username=#{username} and password=#{password}") User selByUsersPwd(User users);}

3.service逻辑层代码接口+实现'

package com.wq.service;import com.wq.pojo.User;public interface UsersService { /** * 登入 * @param users * @return */ User login(User users);}

这里用到设值注入

package com.wq.service.impl;import com.wq.mapper.Usersmapper;import com.wq.pojo.User;import com.wq.service.UsersService;public class UsersServiceImpl implements UsersService { private Usersmapper usersmapper; public Usersmapper getUsersmapper() { return usersmapper; } public void setUsersmapper(Usersmapper usersmapper) { this.usersmapper = usersmapper; } @Override public User login(User users) { // TODO Auto-generated method stub return usersmapper.selByUsersPwd(users); }}

在Spring配置文件配置环境-com.wq.service.UsersService

通过查询数据库将其set到service中获取查询数据


4.控制器Servlet代码

获取Spring逻辑对象 通过init初始化代码

验证码(输入与图形对比)


package com.wq.Servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.context.ApplicationContext;import org.springframework.web.context.support.WebApplicationContextUtils;import com.wq.pojo.User;import com.wq.service.UsersService;import com.wq.service.impl.UsersServiceImpl;/** * Servlet implementation class LoginServlet */@WebServlet(name = "login", urlPatterns = { "/login" })public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; private UsersService usersService; @Override public void init() throws ServletException { ApplicationContext ac=WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); usersService = ac.getBean("usersService",UsersServiceImpl.class); } protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String codString=req.getParameter("code"); String codession = req.getSession().getAttribute("code").toString(); System.out.println(codession); System.out.println(codString); if(codession.equals(codString)){ String usernameString=req.getParameter("username"); String passwordString=req.getParameter("password"); User users=new User(); users.setUsername(usernameString); users.setPassword(passwordString); User user = usersService.login(users); if(user!=null){ resp.sendRedirect("main.jsp"); }else { req.setAttribute("error", "用户名密码不正确"); req.getRequestDispatcher("index.jsp").forward(req, resp); } }else { req.setAttribute("error", "验证码不正确"); req.getRequestDispatcher("index.jsp").forward(req, resp); } }}

验证码不正确


密码不正确


登入成功


index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript" src="js/jquery-1.7.2.js"></script> <script type="text/javascript"> $(function(){ $("a").click(function(){ //浏览器带有缓存功能,不会多次请求相同数据 ?date= +new DataView() /* $("img").attr("src","vcs?date="+new DataView()); */ $("img").attr("src","vcs?number="+Math.random());//实现局部刷新 return false; }) }) </script> </head> <body> <!-- <img alt="" src="demo">直接返回一个Servlet的图片流 访问静态资源和访问控制器的结果都是一样的---一个是静态访问图片路径------另一个是动态获取图片流 --> ${error } <form action="login" method="post"> 用户名:<input type="text" name="username"/><br> 密码:<input type="password" name="password"/><br> 验证码:<input type="text" size="4" name="code"/><img alt="" src="vcs" width="80" height="40"><a href="">看不清</a><br> <input type="submit" value="登入" /><input type="reset" value="重置"> </form> </body></html>

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码