当前位置: 首页 > news >正文

MVC架构中的servlet层重定向404小坑

servlet层中的UserLoginServlet.java

package com.mhys.servlet; /*** ClassName: ${NAME}* Description:** @Author 数开_11* @Create 2024-05-29 20:32* @Version 1.0*/import com.mhys.pojo.User;
import com.mhys.service.UserService;
import com.mhys.service.impl.UserServiceImpl;import javax.naming.Name;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.lang.annotation.Repeatable;
import com.mhys.servlet.UserLoginServlet;
@WebServlet(name = "UserLoginServlet",value = "/UserLoginServlet")
public class UserLoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");String name = request.getParameter("name");String pwd = request.getParameter("pwd");// 创建userServletUserService service = new UserServiceImpl();User user = service.findByNameAndPassword(name, pwd);if (user != null) {request.getRequestDispatcher("/index.jsp").forward(request, response);
//            response.sendRedirect("/login.jsp");} else {request.setAttribute("msg", "user/pwd错误哦");request.getRequestDispatcher("/login.jsp").forward(request, response);
//            response.sendRedirect("login.jsp");}}
}

创建servlet映射对应到页面表单的跳转

login.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><style>.centered-element{margin: 300px auto ;width: 200px;display: block;}</style><meta charset="UTF-8" ><title>HadoopWebLogin</title>
</head>
<body><form action="/UserLoginServlet" class="centered-element">
<%--        使用外部css来居中这个table--%><table class="centered-element">
<%--            caption标签定义了表格的标题--%><caption>用户登录</caption>
<%--            tr标签表示的时表格的row--%><tr>
<%--                td标签表示的是单元格cell--%><td>账户:</td>
<%--    input标签是一个输入的控件--%><td><input type="text" name="name"></td></tr><tr><td> 密码: </td><td><input type="text" name="pwd"></td></tr><tr><td><input type="submit" value="登录"></td><td><input type="reset" value="重置"></td></tr>
<%--    从request域中拿info--%><tr><td colspan="2"><span style="color: red;">${msg}</span></td></tr></table></form></body>
</html>

submit之后去找servlet层中的UserLoginServlet.java 进行逻辑判断---> 重定向操作

注!: 这里必须要在web.xml中配置上!!!!!(我是在这里犯错了,U小写了,找了半天没看出了,笑晕)

   <servlet>    <servlet-name>UserLoginServlet</servlet-name><servlet-class>com.mhys.servlet.UserLoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>UserLoginServlet</servlet-name><url-pattern>/UserLoginServlet</url-pattern></servlet-mapping>
 

这里的webservlet中的路径是严格区分大小写的,写错小个小点都会在登录时重定向报404找不到资源!!!!

另一个注意点:就是创建对象获取数据库中的user/pwd时new 数据类型是UserService 父类

不要是接口的实现类

 utils 层中的JDBCUtils.java

package com.mhys.util;import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;/*** ClassName: JdbcUtils* Description:** @Author 数开_11* @Create 2024-05-29 17:46* @Version 1.0*/
public class JdbcUtils {public static Connection getConnection() throws Exception{Connection connection=null;try{//1-读取db.properties文件Properties properties=new Properties();InputStream in=JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");properties.load(in);//2-读取属性String driver=properties.getProperty("driver");String url=properties.getProperty("url");String username=properties.getProperty("username");String password=properties.getProperty("password");//3-注册驱动Class.forName(driver);//4-获取连接connection= DriverManager.getConnection(url,username,password);//5-日志打印连接信息System.out.println("连接信息: " + url + " " + username + " " + password);} catch (Exception e) {e.printStackTrace();throw new RuntimeException("数据库连接失败,请检查连接参数是否正确!");}return connection;}
}

和项目的资源目录下配置db.properties文件

内容:
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:33306/javaweb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
username=root
password=root

相关文章:

MVC架构中的servlet层重定向404小坑

servlet层中的UserLoginServlet.java package com.mhys.servlet; /*** ClassName: ${NAME}* Description:** Author 数开_11* Create 2024-05-29 20:32* Version 1.0*/import com.mhys.pojo.User; import com.mhys.service.UserService; import com.mhys.service.impl.UserSer…...

Java-RabbitMQ

RabbitMQ使用场景 1、跨系统异步通信 2、多应用之间解耦 3、应用内流程同步变异步 4、整体架构即采用消息驱动 5、应用内部解耦 RabbitMQ内部角色 角色简介生产者消息创建者消费者消息接收者代理RabbitMQ本身&#xff0c;用于存储转发消息&#xff0c;快递功能 RabbitMQ有哪…...

ABAP 在增强中COMMIT

前言 呃&#xff0c;又是很磨人的需求&#xff0c;正常情况下是不允许在增强中COMMIT的&#xff0c;会影响源程序本身的逻辑&#xff0c;但是这个需求就得这么干… 就是在交货单增强里面要再调用一次交货单BAPI&#xff0c;通过SO的交货单自动创建STO的交货单&#xff0c;如果…...

【UML用户指南】-02-UML的14种图

1、结构图 1、类图&#xff08;class diagram&#xff09; 展现了一组类、接口、协作和它们之间的关系。 在面向对象系统的建模中所建立的最常见的图就是类图。类图给出系统的静态设计视图。 包含主动类的类图给出系统的静态进程视图。构件图是类图的变体。 2、对象图&a…...

Linux驱动开发笔记(二) 基于字符设备驱动的I/O操作

文章目录 前言一、设备驱动的作用与本质1. 驱动的作用2. 有无操作系统的区别 二、内存管理单元MMU三、相关函数1. ioremap( )2. iounmap( )3. class_create( )4. class_destroy( ) 四、GPIO的基本知识1. GPIO的寄存器进行读写操作流程2. 引脚复用2. 定义GPIO寄存器物理地址 五、…...

三品软件:打造高效安全的图文档管理体系

在数字化转型的浪潮中&#xff0c;工程设计单位和企业设计部门面临着电子图文档管理的巨大挑战。随着电子图纸和文档数量的激增&#xff0c;如何有效组织、管理和共享这些资源&#xff0c;成为提升工作效率和保障信息安全的关键。本文将探讨当前图文档管理面临的问题&#xff0…...

N1 one-hot编码

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言 前言 onehot编码在机器学习比较常见&#xff0c;例如推荐系统中类别变量的处理等。 onehot 编码简介 One-hot编码&#xff08;one-hot encoding&…...

数据库基础+增删查改初阶

数据库基础增删查改初阶 一。数据库操作 1.概念&#xff1a; 一个mysql服务器上有很多的表&#xff0c;把有关系的表放在一起就构成了一个数据集合&#xff0c;此时称为“数据库”&#xff0c;一个mysql1服务器上可以有多个这样的数据库 2.创建数据库&#xff1a; create …...

大模型日报2024-05-29

大模型日报 2024-05-29 大模型资讯 大型语言模型在金融预测中将超越人类分析师 摘要: 新研究表明&#xff0c;大型语言模型如ChatGPT在金融预测方面表现优于人类专家&#xff0c;为交易策略提供了宝贵的见解。这意味着未来这些模型将在金融领域发挥更重要的作用&#xff0c;提升…...

如何摆脱打工人任人宰割的命运

那就是为自己打工。 要有自己的思想&#xff0c;自己的目标&#xff0c;有自己的方向&#xff0c;坚决的非常自信的去执行它。 这样才是活出属于自己的人生&#xff0c;活出自己的精彩。 当然&#xff0c;这是在你已经比周围人优秀的情况下&#xff0c;至少是你觉得你比他们…...

“图片在哪”、“我是temunx”、“变成思维导图用xmindparser”gpt给出文本变字典

需求 我的意思是什么 分类清单“图片在哪 我是temunx变成思维导图 用xmindparser用 shell 画思维导图 x mind&#xff0c;可以 /storage/emulated/0/字体/黑体.ttf 保存/storage/emulated/0/print/图片/input图纸/完整代码 给个文本内容”任务清单 调整语言顺序文不对题的…...

【LeetCode】【5】最长回文子串

文章目录 [toc]题目描述样例输入输出与解释样例1样例2 提示Python实现动态规划 个人主页&#xff1a;丷从心 系列专栏&#xff1a;LeetCode 刷题指南&#xff1a;LeetCode刷题指南 题目描述 给一个字符串s&#xff0c;找到s中最长的回文子串 样例输入输出与解释 样例1 输入…...

主播们直播时的美颜是如何实现的?集成第三方美颜SDK方案详解

很多人问小编&#xff0c;主播们直播时的美颜效果是如何实现的呢&#xff1f;接下来&#xff0c;我将为您详细介绍美颜功能的实现原理。 一、美颜功能的基本原理 通过对图像进行实时处理&#xff0c;达到美化人脸的效果。其主要技术包括&#xff1a; 1.人脸检测与关键点定位 …...

Leetcode - 131双周赛

一&#xff0c;3158. 求出出现两次数字的 XOR 值 本题是一道纯模拟题&#xff0c;直接暴力。 代码如下&#xff1a; class Solution {public int duplicateNumbersXOR(int[] nums) {int ans 0;long t 0;for(int x : nums){if(((t>>x)&1) 1){ans ^ x;}else{t | (…...

【CSharp】判断目录以及文件是否存在

【CSharp】判断目录以及文件是否存在 1.背景2.判断目录3.判断文件1.背景 我们在进行磁盘IO的时候进行需要判断目录、文件是否存在,根据判断结果再做进一步的操作。 其中判断目录是否存在,涉及Directory.Exists(String) 方法; 命名空间:System.IO 方法功能:确定给定路径是…...

kali基本扫描工具(自带)

免责声明:本文仅做技术交流与学习...请勿非法破坏... 详细用法: 命令 -h/百度/翻译 fping 用法 hostlist 文件里面为ip fping -a -q -f hostlist -a 只看存活的 fping -g 202.100.1.1 202.100.1.255 -a -q > Ahost 输出到Ahost文件上 nping nping -c 1 201.100.2.155-244 …...

与MySQL的初相遇

&#x1f30e;初识MySQL 注&#xff1a;本文SQL语句只为了验证猜想&#xff0c;不会也不要紧。 文章目录&#xff1a; MySql开端 认识数据库       什么是数据库       主流数据库       MySQL的本质 MySQL基础使用       连接mysql服务器     …...

详解Spring IoCDI(一)

目录 1.什么是IoC 2.IoC应用场景&#xff08;案例分析&#xff09; 2.1传统程序开发 2.2问题分析 2.3解决方案 2.4IoC 优势 3. DI概念 4.IoC详解 4.1Bean的存储 4.2Controller&#xff08;控制器存储&#xff09; 4.3获取Bean 4.4Bean相关注解 1.什么是IoC Spring…...

Android 14 - 绘制体系 - 概览

从Android 12开始&#xff0c;Android的绘制系统有结构性变化&#xff0c; 在绘制的生产消费者模式中&#xff0c;新增BLASTBufferQueue&#xff0c;客户端进程自行进行queue的生产和消费&#xff0c;随后通过Transation提交到SurfaceFlinger&#xff0c;如此可以使得各进程将缓…...

【RAG论文】文档树:如何提升长上下文、非连续文档、跨文档主题时的检索效果

RAPTOR Recursive Abstractive Processing for Tree-Organized RetrievalICLR 2024 Stanfordhttps://arxiv.org/pdf/2401.18059 RAPTOR&#xff08;Recursive Abstractive Processing for Tree-Organized Retrieval&#xff09;是一种创建新的检索增强型语言模型&#xff0c;它…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...