request.getParameter("XXX")获取URL中传递的参数

本文讲解了如何在URL中正确地使用request.getParameter方法来获取参数,而非错误地使用request.getAttribute方法,并介绍了URL参数的正确书写格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

request.getParameter("XXX")获取URL中传递的参数,不能错写成request.getAttribute("XXX"),它是获取session里面值的方法。URL写的时候“servlet名/jsp文件名+?+参数名+=+参数值+&+参数名+=+参数值....”(忽略里面的加号),注意?和&符合写的位置。


package com.cissst.servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; 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.cissst.entity.Admin; import com.cissst.entity.CustomAccount; import com.cissst.service.IAdminService; import com.cissst.service.ICustomAccountService; import com.cissst.service.impl.AdminServiceImpl; import com.cissst.service.impl.CustomAccountServiceImpl; import com.cissst.util.MD5Util; import com.mysql.cj.AbstractQuery; public class UserServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); String action = request.getParameter("action"); IAdminService as = new AdminServiceImpl(); ICustomAccountService cs = new CustomAccountServiceImpl(); HttpSession session = request.getSession(); switch (action) { case "login": handleLogin(request, response, session, as, cs); break; case "logout": case "relogin": handleLogout(session, response); break; } } private void handleLogin(HttpServletRequest request, HttpServletResponse response, HttpSession session, IAdminService adminService, ICustomAccountService accountService) throws IOException { String username = request.getParameter("username"); String password = MD5Util.encode(request.getParameter("password")); String userType = request.getParameter("usertype"); // 根据用户类型验证登录 if ("admin".equals(userType)) { Admin admin = adminService.findBynp(username, password); if (admin != null) { session.setAttribute("admin", admin); response.sendRedirect("index.jsp"); return; } } else if ("user".equals(userType)) { CustomAccount account = accountService.findBynp(username, password); if (account != null) { session.setAttribute("custom_Account", account); response.sendRedirect("index2.jsp"); return; } } // 统一处理登录失败 handleLoginFailure(request, response); } private void handleLogout(HttpSession session, HttpServletResponse response) throws IOException { if (session != null) { session.invalidate(); } response.sendRedirect("login.jsp"); } private void handleLoginFailure(HttpServletRequest request, HttpServletResponse response) throws IOException { // 使用传入的 request 对象 HttpSession session = request.getSession(); session.setAttribute("loginError", "用户名或密码错误"); response.sendRedirect("login.jsp"); } } at com.cissst.servlet.UserServlet.service(UserServlet.java:36)
最新发布
08-04
jsp <%@ page contentType="text/html; charset=utf-8" language="java"%> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>登录</title> </head> <body> <h2>用户登录</h2> <form action="login_do.jsp" method="post"> 用户名:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/> <input type="submit" value="登录"/> </form> </body> </html> login_do.jsp (关键修复): jsp <%@ page contentType="text/html; charset=utf-8" language="java"%> <%@ page import="javax.servlet.http.*" %> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>登录结果</title> </head> <body> <% String username = request.getParameter("username"); String password = request.getParameter("password"); if(username != null) username = username.trim(); if(password != null) password = password.trim(); if("x".equals(username) && "123".equals(password)) { // 创建会话并存储属性 HttpSession session = request.getSession(); session.setAttribute("username", username); // 修复:添加正确的重定向路径 response.sendRedirect(request.getContextPath() + "/welcome.jsp"); } else { out.println("用户名或密码不正确,5秒后为您跳转回登录页面..."); out.println("<meta http-equiv='refresh' content='5;url=" + request.getContextPath() + "/login.jsp'>"); } %> </body> </html> welcome.jsp (关键修复): jsp <%@ page contentType="text/html; charset=utf-8" language="java"%> <%@ page import="javax.servlet.http.*" %> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>欢迎</title> </head> <body> <% HttpSession session = request.getSession(false); String user = (session != null) ? (String) session.getAttribute("username") : null; if(user == null) { out.println("您必须先登录,5秒后为您跳转回登录页面..."); out.println("<meta http-equiv='refresh' content='5;url=" + request.getContextPath() + "/login.jsp'>"); } else { // 仅在用户已登录时显示欢迎信息 %> <h1>欢迎您,<%= user %>!</h1> <% } %> </body> </html>这三段是eclipse中web的代码,为什么运行之后会显示HTTP ERROR 404 Not Found URI: /ss/login_do.jsp STATUS: 404 MESSAGE: Not Found SERVLET: - Powered by Jetty:// 12.0.15
06-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值