最新Servlet进阶(Session对象实现登录)(1),mongodb面试题2024

我的面试宝典:一线互联网大厂Java核心面试题库

以下是我个人的一些做法,希望可以给各位提供一些帮助:

整理了很长一段时间,拿来复习面试刷题非常合适,其中包括了Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!

image

283页的Java进阶核心pdf文档

Java部分:Java基础,集合,并发,多线程,JVM,设计模式

数据结构算法:Java算法,数据结构

开源框架部分:Spring,MyBatis,MVC,netty,tomcat

分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等

微服务部分:SpringBoot,SpringCloud,Dubbo,Docker

image

还有源码相关的阅读学习

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

2.3 创建JDBCUtils.java封装JDBC工具类


package com.yl.kaka.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class JDBCUtils {

//定义常量

final static String driver = “com.mysql.jdbc.Driver”;

final static String url = “jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8”;

final static String username = “root”;

final static String password = “root”;

//声明常用对象

protected Connection conn = null;

protected PreparedStatement pstmt = null;

protected ResultSet rs = null;

//静态代码块

static{

try {

Class.forName(driver);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

//获取连接

public void getConnection(){

try {

conn = DriverManager.getConnection(url,username,password);

} catch (SQLException e) {

e.printStackTrace();

}

}

//关闭资源

public void closeAll(){

try {

if(rs != null) rs.close();

if(pstmt != null) rs.close();

if(conn != null) rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

2.4 创建UserInfoDao.java接口


package com.yl.kaka.dao;

import com.yl.kaka.entity.UserInfo;

public interface UserInfoDao {

public UserInfo findUserInfoByUsername(String username);

}

2.5 创建UserInfoDaoImpl.java接口实现类


package com.yl.kaka.dao;

import java.sql.SQLException;

import com.yl.kaka.entity.UserInfo;

import com.yl.kaka.util.JDBCUtils;

public class UserInfoDaoImpl extends JDBCUtils implements UserInfoDao {

@Override

public UserInfo findUserInfoByUsername(String username) {

String sql = “SELECT * FROM LOGIN”;

try {

super.getConnection();

pstmt = conn.prepareStatement(sql);

rs = pstmt.executeQuery();

UserInfo info = new UserInfo();

while(rs.next()){

if (username.equals(rs.getString(“username”))) {

String password = rs.getString(“password”);

info.setPassword(rs.getString(“password”));

info.setUsername(username);

}else{

return null;

}

}

return info;

} catch (SQLException e) {

e.printStackTrace();

}finally{

super.closeAll();

}

return null;

}

}

2.6 配置XML文件


InforServlet

com.yl.kaka.controller.UserInfoServlet

InforServlet

/userInfo

2.7 编写UserInfoServlet.java


package com.yl.kaka.controller;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import com.yl.kaka.dao.UserInfoDao;

import com.yl.kaka.dao.UserInfoDaoImpl;

import com.yl.kaka.entity.UserInfo;

import cn.dsna.util.images.ValidateCode;

public class UserInfoServlet extends HttpServlet{

@Override

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//获取页面的值

String action = request.getParameter(“action”);

if(action == null){

//获取跳转的页面

request.getRequestDispatcher(“login.jsp”).forward(request, response);

}else if(action.equals(“code”)){//获取验证码

//生成验证码

ValidateCode vc = new ValidateCode(200,30,4,10);

//获取验证码

String codes = vc.getCode();

//写入session

HttpSession session = request.getSession();

//传入session中

session.setAttribute(“vcode”, codes);

//写入流中

vc.write(response.getOutputStream());

}else if(action.equals(“login”)){//展示登录页面

//处理登录请求,获取信息

String username = request.getParameter(“username”)== null?“Admins”:request.getParameter(“username”);

String password = request.getParameter(“password”);

String verifyCode = request.getParameter(“verifyCode”);

//从session中获取事先存储的验证码

HttpSession session = request.getSession();

String sessionCode = (String)session.getAttribute(“vcode”);

//匹配验证码

if(!verifyCode.isEmpty()&&verifyCode.equalsIgnoreCase(sessionCode)){

//验证码正确,继续根据用户名查询用户信息

UserInfoDao uid = new UserInfoDaoImpl();

//调用方法

UserInfo userInfo = uid.findUserInfoByUsername(username);

if (userInfo!=null) {

if(userInfo.getPassword().equalsIgnoreCase(password)){

//登录成功,将用户信息写入session中

session.setAttribute(“userInfo”, username);

//显示登录成功

request.getRequestDispatcher(“success.jsp”).forward(request, response);

}else{//验证码不正确,重新到登录页

response.sendRedirect(“login.jsp”);

}

}else{

response.sendRedirect(“login.jsp”);

}

}else{//验证码不正确,重新到登录页

response.sendRedirect(“login.jsp”);

}

}else{

//验证用户是否登录才可访问的页

HttpSession session = request.getSession();

Object info = session.getAttribute(“userInfo”);

if(info!=null){

request.getRequestDispatcher(“page.jsp”).forward(request, response);

}

else{

response.sendRedirect(“login.jsp”);

}

}

}

}

2.8 编写login.jsp登录页面


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

pageEncoding=“UTF-8”%>

登录页面

USERNAME:

PASSWORD:

verifyCode:

2.9 成功登录页面


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

pageEncoding=“UTF-8”%>

Insert title here

success...........

name:<%=session.getAttribute(“userInfo”) %>

总结

在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

success...........

name:<%=session.getAttribute(“userInfo”) %>

总结

在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。

[外链图片转存中…(img-9zlvGjDa-1715647422402)]

[外链图片转存中…(img-hrC6apgA-1715647422403)]

[外链图片转存中…(img-GRred6Fz-1715647422403)]

[外链图片转存中…(img-PYmd8wpD-1715647422404)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值