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();
        }
    }

}
复制代码

 

 

 

posted @   expworld  阅读(96)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示