[JSP] 利用Servlet对用户名和密码进行服务器端验证

利用Servlet对用户名和密码进行服务器端验证

校验规则:

1. 用户名只能为数字/字母/英文点号(.), 且不能由数字开始, 至少4位

2. 密码不能由全部重复的字符组成, 不能由连续的数字组成(123456/654321), 至少6位

代码如下:

package com.shy;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


publicclass ProcessServlet extends HttpServlet {

protectedvoid Process(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(
"utf-8");
response.setContentType(
"text/html;charset=UTF-8");

String username
= request.getParameter("username");
String password
= request.getParameter("password");

boolean flag =true;
//将出借的信息写入 errorList中
List<String> errorList =new ArrayList<String>();
//判断用户名不能为空
if(null==username ||"".equals(username))
{
errorList.add(
"用户名不能为空");
}
//判断用户不用小于4位
elseif(username.length()<4)
{
errorList.add(
"用户名不能小于4位");
}
//判断用户名第一位不能为数字
elseif(Character.isDigit(username.charAt(0)))
{
errorList.add(
"用户名首字母不能为数字");
}
//判断用户名只能为字母数字以及(.) 英文逗点"
for(int i=0;i<username.length();i++)
{
char c = username.charAt(i);
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(Character.isDigit(c))||(c=='.'))
{
continue;
}
else
{
errorList.add(
"用户名只能为字母数字以及(.) 英文逗点");
}
}

//判断密码不能小于6位
if(password.length() <6)
{
errorList.add(
"密码长度不能小于6位");
}
//判断密码不能由全部重复的字符组成
for(int j=0;j<password.length()-1;j++)
{
if(password.charAt(j)!=password.charAt(j+1))
{
continue;
}
else
{
errorList.add(
"密码不能由全部重复字符组成");
}
}
//判断密码是不是全由数字组成
for(int i=0;i<password.length();i++)
{
char c = password.charAt(i);
if(Character.isDigit(c))
{
continue;
}
else
{
flag
=false;
}
}
//如果密码全由数字组成,判断他是否为连续字符
if(flag)
{
for(int k=0;k<password.length()-1;k++)
{
if((int)password.charAt(k) +1!= (int)password.charAt(k+1))
{
continue;
}
else
{
errorList.add(
"不能由连续的数字组成(123456)");

}
}
}
//如果密码全由数字组成,判断他是否为连续字符
if(flag)
{
for(int k=0;k< password.length()-1;k++)
{
if((int)password.charAt(k)-1!= (int)password.charAt(k+1))
{
continue;
}
else
{
errorList.add(
"不能由连续的数字组成(123456)");
}
}
}

if(errorList.isEmpty())
{
request.setAttribute(
"username", username);
request.setAttribute(
"password", password);
request.getRequestDispatcher(
"javaservletsuccess.jsp").forward(request,response);
}
else
{
request.setAttribute(
"error", errorList);
request.getRequestDispatcher(
"javaservleterror.jsp").forward(request,response);
}
}

@Override
protectedvoid doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Process(req,resp);
}

@Override
protectedvoid doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Process(req,resp);
}
}

转载于:https://www.cnblogs.com/shanhaiyang/archive/2011/08/03/2125954.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您解答这个问题。首先,您需要确保您的项目中已经引入了 EL 和 JSTL 库。接下来,您可以按照以下步骤来改进用户登录页面: 1. 在 login.jsp 页面中,使用表单元素来获取用户输入的用户名密码,并将其提交到服务器进行验证。 2. 在服务器,您可以编写一个 ServletJSP 页面来处理用户提交的数据,验证用户名密码是否正确。如果验证成功,则将用户的用户名保存在 Session 中,并将页面重定向到 main.jsp 页面。 3. 在 main.jsp 页面中,您可以使用 EL 表达式来获取保存在 Session 中的用户名,并使用 JSTL 的 c:out 标签显示欢迎语句。 下面是一个示例代码,供您参考: login.jsp: ``` <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <form action="loginServlet" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username" value="${param.username}"> <br> <label for="password">Password:</label> <input type="password" id="password" name="password"> <br> <input type="submit" value="Login"> </form> <c:if test="${not empty param.error}"> <p>用户名密码错误,请重新输入。</p> </c:if> ``` loginServlet.java: ``` @WebServlet("/loginServlet") public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); // 验证用户名密码是否正确,这里假设用户名为 "admin",密码为 "123456" if ("admin".equals(username) && "123456".equals(password)) { // 将用户名保存在 Session 中 HttpSession session = request.getSession(); session.setAttribute("username", username); // 重定向到 main.jsp 页面 response.sendRedirect("main.jsp"); } else { // 用户名密码错误,重定向回 login.jsp 页面,并保留原来的用户名 response.sendRedirect("login.jsp?username=" + username + "&error=true"); } } } ``` main.jsp: ``` <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <c:set var="username" value="${sessionScope.username}" /> <c:if test="${not empty username}"> <p>用户${username},你好!</p> </c:if> ``` 希望这个示例能够帮到您,如果您还有其他问题,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值