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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL之创建高性能的索引(六)

创建高性能的索引 选择合适的索引列顺序 当使用前缀索引的时候&#xff0c;在某些条件值的基数比正常值高的时候&#xff0c;问题就来了。例如&#xff0c;在某些应用程序中&#xff0c;对于没有登录的用户&#xff0c;都将其用户名记录为"guest"&#xff0c;在记录…

基于python flask的旅游数据大屏实现,有爬虫有数据库

背景 随着旅游行业的快速发展&#xff0c;数据在旅游决策和规划中的重要性日益凸显。基于 Python Flask 的旅游数据大屏实现研究旨在结合爬虫技术和数据库存储&#xff0c;为用户提供全面、实时的旅游信息展示平台。 爬虫技术作为数据采集的重要手段&#xff0c;能够从各种网…

错误记录:从把项目从Tomcat8.5.37转到Tomcat10.1.7

错误信息&#xff1a;在本地Servlet项目里没有报错&#xff0c;但是浏览器跳转该servlet时报错 型 异常报告 消息 实例化Servlet类[com.wangdao.lx.MyServlet1]异常 描述 服务器遇到一个意外的情况&#xff0c;阻止它完成请求。 例外情况 jakarta.servlet.ServletExceptio…

Generative Action Description Prompts for Skeleton-based Action Recognition

标题&#xff1a;基于骨架的动作识别的生成动作描述提示 源文链接&#xff1a;https://openaccess.thecvf.com/content/ICCV2023/papers/Xiang_Generative_Action_Description_Prompts_for_Skeleton-based_Action_Recognition_ICCV_2023_paper.pdfhttps://openaccess.thecvf.c…

解决文件传输难题:如何绕过Gitee的100MB上传限制

引言 在版本控制和代码托管领域&#xff0c;Gitee作为一个流行的平台&#xff0c;为用户提供了便捷的服务。然而&#xff0c;其对单个文件大小设定的100MB限制有时会造成一些不便。 使用云存储服务 推荐理由&#xff1a; 便捷性&#xff1a;多数云存储服务如&#xff1a; Dro…

零基础学习图生图

目录 一、图生图是什么二、安装秋叶整合包2.1 秋叶包安装2.2 秋叶包拓展安装&#xff1a;2.3 ckpt配置&#xff1a;2.4 界面常用功能配置&#xff1a; 三、图生图基本功能展示3.1 图生图的界面3.2 重要的参数设置&#xff1a;3.3 涂鸦功能3.4 局部重绘功能3.5 涂鸦重绘3.6 上传…

网络智能化的发展对仿真环境的需求

1. 网络智能化背景介绍 1.1 什么是网络智能化 网络智能化是指利用人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;、优化算法等技术来实现网络的信息化、自动化和智能化。相对5G、6G、算力网络等领域&#xff0c;网络智能化是针对网络全场景、全要素…

使用C语言openssl库实现 RSA加密 和 消息验证

Q&#xff1a;什么是RSA&#xff1f; A&#xff1a;RSA&#xff08;Rivest-Shamir-Adleman&#xff09;是一种非对称加密算法&#xff0c;是最早的一种用于公开密钥加密和数字签名的算法。它使用一对公钥&#xff08;public key&#xff09;和私钥&#xff08;private key&…

IEEE Latex模版踩雷避坑指南

参考文献 原Latex模版 \begin{thebibliography}{1} \bibliographystyle{IEEEtran}\bibitem{ref1} {\it{Mathematics Into Type}}. American Mathematical Society. [Online]. Available: https://www.ams.org/arc/styleguide/mit-2.pdf\bibitem{ref2} T. W. Chaundy, P. R. Ba…

基于 FastAI 文本迁移学习的情感分类(93%+Accuracy)

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…

[vue3后台管理二]首页和登录测试

[vue3后台管理二]首页和登录测试 1 修改main.js import ./assets/main.cssimport { createApp } from vue import App from ./App.vue import router from ./router createApp(App).use(router).mount(#app)2 路由创建 import {createRouter, createWebHistory} from vue-ro…

计算机网络学习笔记——运输层(b站)

目录 一、 运输层概述 二、运输层端口号、复用与分用的概念 三、UDP和TCP的对比 四、TCP的流量控制 五、TCP的拥塞控制 六、TCP超时重传时间的选择 七、TCP可靠传输的实现 八、TCP报文段的首部格式 一、 运输层概述 物理层、数据链路层、网络层实现了主机到主机的通信…

剪映网页版

https://www.capcut.cn/web 免费&#xff0c;免安装&#xff0c;跨平台&#xff0c;视频云合成&#xff0c;简直太好用了&#xff01;

echarts-事件

echarts部分事件 添加点击事件 添加点击事件&#xff1a; let options {tooltip: {},xAxis: {type: "category",data: ["d1", "d2", "d3", "d4"],},yAxis: {},series: [{type: "line",data: d1,},{type: &qu…

Codeforces Round 948 (Div. 2) E. Tensor(思维题-交互)

题目 n(3<n<100)个点的有向图&#xff0c; 图的边的关系未知&#xff0c;但保证以下两点&#xff1a; 1. 只存在j->i&#xff08;i<j&#xff09;的边 2. 对于任意三个点i、j、k&#xff08;i<j<k&#xff09;&#xff0c;要么k可以到达i&#xff0c;要么…

知识付费小程序源码系统 界面支持万能DIY装修,一站式运营 附带完整的源代码以及搭建教程

系统概述 这是一款功能强大的知识付费小程序源码系统&#xff0c;它为用户提供了一个全面的平台&#xff0c;能够满足各种知识付费场景的需求。其界面支持万能 DIY 装修&#xff0c;让用户可以根据自己的品牌形象和风格进行个性化定制&#xff0c;打造出独具特色的小程序界面。…

【云原生】Kubernetes----PersistentVolume(PV)与PersistentVolumeClaim(PVC)详解

目录 引言 一、存储卷 &#xff08;一&#xff09;存储卷定义 &#xff08;二&#xff09;存储卷的作用 1.数据持久化 2.数据共享 3.解耦 4.灵活性 &#xff08;三&#xff09;存储卷的分类 1.emptyDir存储卷 1.1 定义 1.2 特点 1.3 示例 2.hostPath存储卷 2.1 …

postman教程-6-发送delete请求

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了postman发送put请求的方法&#xff0c;本小节我们讲解一下postman发送delete请求的方法。 HTTP DELETE 请求是一种用于删除指定资源的请求方法。在RESTful API 设计中&#xff0c;DELETE 请求…

GPT-4o:重塑人机交互的未来

一个愿意伫立在巨人肩膀上的农民...... 一、推出 在人工智能&#xff08;AI&#xff09;领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术一直被视为连接人类与机器的桥梁。近年来&#xff0c;随着深度学习技术的快速发展&#xff0c;NLP领域迎来了前所未有的变革…

ARM-V9 RME(Realm Management Extension)系统架构之系统能力的执行隔离

安全之安全(security)博客目录导读 目录 一、执行隔离 1、安全状态 2、安全模型 本博客探讨 RME 所需的系统能力&#xff0c;以保证 Arm CCA 对于 Realms 的安全性和隔离特性。 一、执行隔离 1、安全状态 RME 系统支持以下安全状态&#xff1a; 非安全 (Non-secure)安全…