博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从一个
阅读量:6174 次
发布时间:2019-06-21

本文共 2438 字,大约阅读时间需要 8 分钟。

hot3.png

首先贴出login.jsp代码

<%@ page contentType="text/html;charset=UTF-8" language="java"%>登录	
${error}
用户名:
密码:

然后贴后端控制器代码

package com.github.zhangkaitao.shiro.chapter7.web.servlet;import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.AuthenticationException;import org.apache.shiro.authc.IncorrectCredentialsException;import org.apache.shiro.authc.UnknownAccountException;import org.apache.shiro.authc.UsernamePasswordToken;import org.apache.shiro.subject.Subject;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 java.io.IOException;/** * 

User: Zhang Kaitao *

Date: 14-1-29 *

Version: 1.0 */@WebServlet(name = "loginServlet", urlPatterns = "/login")public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String error = null; String username = req.getParameter("username"); String password = req.getParameter("password"); Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(username, password); token.setRememberMe(true); try { subject.login(token); } catch (UnknownAccountException e) { error = "用户名/密码错误"; } catch (IncorrectCredentialsException e) { error = "用户名/密码错误"; } catch (AuthenticationException e) { //其他错误,比如锁定,如果想单独处理请单独catch处理 error = "其他错误:" + e.getMessage(); } if(error != null) {//出错了,返回登录页面 req.setAttribute("error", error); req.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(req, resp); } else {//登录成功 req.getRequestDispatcher("/WEB-INF/jsp/loginSuccess.jsp").forward(req, resp); } }}

后端控制器分别有两个关于登录验证的方法,一个是doGet一个是doPost,那当前端访问 (1)如果没有表单提交访问的情况下,默认是访问doGet方法 (2)如果有表单提交访问,并且表单没有指定method="post",这时访问的还是doGet方法 (3)如果有表单提交访问,并且表单指定method="post",这时访问的是doPost方法

转载于:https://my.oschina.net/zhanggongming/blog/716219

你可能感兴趣的文章
golang ffmpeg 做网络直播
查看>>
JavaNIO的总结
查看>>
Java线上应用故障之CPU占用高排查与定位
查看>>
exosip 和 pjsip 简介
查看>>
vue 时间格式化
查看>>
[js高手之路]html5 canvas动画教程 - 重力、摩擦力、加速、抛物线运动
查看>>
Oracle ____Undo
查看>>
sbt使用详解
查看>>
使用OpenFace进行人脸识别(1)
查看>>
Shiro系列(3) - What is shiro?
查看>>
MySQL详解(18)-----------分页方法总结
查看>>
linux可运行的shell脚本与设置开机服务启动(自己总结)
查看>>
框架的概念,框架与库的区别
查看>>
HTTP协议详细介绍
查看>>
用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
查看>>
SharePoint Online 创建图片库
查看>>
MySQL存储引擎对比
查看>>
查看SQL实际内存占用
查看>>
Android:用签名打包后微信分享失效
查看>>
可迭代对象和迭代器生成器
查看>>