03.登录注册注销案例-自定义登录异常
UserException.java
package com.gyf.exception; public class UserException extends Exception{ public UserException(String message) { super(message); // TODO Auto-generated constructor stub } }
LoginServlet.java
package com.exp.web.servlet; import java.io.IOException; import java.lang.reflect.InvocationTargetException; 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.apache.commons.beanutils.BeanUtils; import com.exp.domain.User; import com.exp.exception.UserException; import com.exp.service.IUserService; import com.exp.service.impl.UserServiceImpl; @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setHeader("content-type", "text/html;charset=utf-8"); //1、获取请求参数 User formUser = new User(); try { BeanUtils.populate(formUser,request.getParameterMap()); //调用业务方法 login IUserService userService = new UserServiceImpl(); try { User dbUser = userService.login(formUser); //登录用户存储到session request.getSession().setAttribute("user", dbUser); //进入后台页面 response.sendRedirect(request.getContextPath() + "/main.jsp"); } catch (UserException e) { e.printStackTrace(); //往request里存数据 request.setAttribute("message", e.getMessage()); //登录失败,回到登录页面【转发】 request.getRequestDispatcher("/login.jsp").forward(request, response); } } catch (IllegalAccessException e1) { e1.printStackTrace(); } catch (InvocationTargetException e1) { e1.printStackTrace(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?