JavaWeb简单登录案例
开发环境:jdk 1.8
开发工具:IDEA
服务器:TomCat
此次实现一个简单的登录功能,登录页面包含用户名和密码两个用户输入框,用户输入用户名和密码,正确则跳转到登录成功界面,并显示用户名;错误则显示登录失败。跳转这里使用重定向
一共有4个页面,LoginServle.java SuccessServlet .java FailServlet.java 和前端界面login.jsp
首先先来写一下前端页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录首页</title>
</head>
<body>
<h1>登录首页</h1>
<form action="/loginServlet" method="post"> <%--表单数据将提交到loginServlet --%>
用户名:<input type="text" name="username" placeholder="请输入用户名"><br>
密 码:<input type="password" name="password" placeholder="请输入密码"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
简单的输入框和密码框再加一个提交的登录按钮,这里的表单加了LoginServlet的映射,相当于点击提交之后,之间访问表单action的路径,找到LoginServlet.java,然后进行用户名和密码的简单校验。
接着来写一下LoginServlet.java
首先,肯定要获取从前端jsp传过来的用户名和密码吧
这里使用request.getParameter(),request.getParameter() 方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据;request.getParameter()方法返回String类型的数据。
所以下面我会用String类型来接收这个值,并将值存放在session域中,为了简单的模拟这个过程,就没有连接数据库,采用map集合的键值对形式来保持真实的用户名和密码,用equals方法判断两个值是否相等,相等则跳转登录成功的界面并显示用户名;失败则提示失败。
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取前端登录首页用户输入的数据
String username = request.getParameter("username");//获取文本框名为name的文本框
String password = request.getParameter("password");
request.getSession().setAttribute("username",username);
//没时间连接数据库,改用集合存放真实的用户名密码
Map<String,String> map = new HashMap<>();
map.put("username","admin");
map.put("password","123");
//校验用户输入的账号和密码
if(map.get("username").equals(username) &&map.get("password").equals(password) ){
//输入的用户名密码和真实的账号密码(admin,123)一样的话,则转发到welcomeServlet
response.sendRedirect("/successServlet");
}else{
//登录失败则转发到failServlet
// 转发 request.getRequestDispatcher("/failServlet").forward(request,response);
response.sendRedirect("/failServlet");//重定向
}
}
}
接着写登录成功的SuccessServlet.java
设置编码防止乱码就不用多说了,这里验证成功后,直接从session域中取出username的值,然后显示在页面上
@WebServlet("/successServlet") //对应LoginServlet类里面转发的路径
public class SuccessServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().println("登录成功<br>");
String s= (String) req.getSession().getAttribute("username");
resp.getWriter().println("姓名:"+s);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
FailServlet.java的就简单显示一下登录失败就行
@WebServlet("/failServlet") //对应LoginServlet类里面转发的路径
public class FailServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().println("登录失败");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
注意:这里最重要的就是映射路径别写错了,@WebServlet("/") 层层对应的。
下面来看看简单的实现效果
好了,关于此次JavaWeb的简易登录就说到这里了,如有不足之处,欢迎指正!
感恩能与大家在华为云遇见!希望能与大家一起在华为云社区共同成长。
- 点赞
- 收藏
- 关注作者
评论(0)