一共需要4个jsp页面 分别是login.jsp dologin.jsp login_success.jsp login_failure.jsp
原理:login.jsp是登录页面,在里面创建表单,动作提交到dologin.jsp页面判断登录成功或失败,登陆成功跳转到 login_success.jsp,登录失败就跳转到login_failure.jsp
1.login.jsp
<body>
<form method="post" action="dologin.jsp"> <%--动作提交到dologin.jsp--%>
<p>
<label>用户名:</label>
<input type="text" name="username" value="">
</p>
<p>
<label> 密码:</label>
<input type="password" name="password" value="">
</p>
<p>
<input type="submit" name="tijiao" value="登录">
</p>
</form>
</body>
2.dologin.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String username="";
String password="";
request.setCharacterEncoding("utf-8"); //防止中文乱码
username = request.getParameter("username"); //返回username的参数值
password = request.getParameter("password"); //返回password的参数值
if("Root".equals(username)&&"123456".equals(password)) //设置用户名为Root,密码为123456
{
session.setAttribute("loginuser",username); /*在登陆成功跳转页面之前,将username放在会话(session)当中,将username参数值传给loginuser*/
request.getRequestDispatcher("login_success.jsp").forward(request,response); /*请求转发,登陆成功跳转到login_success.jsp*/
}
else
{
response.sendRedirect("login_failure.jsp"); //请求重定向,登录失败跳转到login_failure.jsp
}
/*关于请求转发和请求重定向二者区别:forward(request,response)里面放的是用户提交过来的请求和将给用户发送的响应,当你是用这个方法将页面跳转到其他jsp页面的时候,你可以在在jsp页面上使用request,response对象。并且这两个对象就是之前你参数传过来的两个对象。sendRedirect()就相当于直接把括号里的网页结果响应给客户。
举例:登录时,如果失败就需要使用sendRedirect()直接让用户跳转到登录页面让他重新登录。如果登录成功,那么就是用forward()方法跳转到成功后应该显示的页面,这样用户的登录名之类的信息就可以交给成功页面使用。*/
%>
3.login_success.jsp
<body>
<h1>欢迎<span style = "color:red;"><%=session.getAttribute("loginuser") %></span>,登录成功!</h1> <%--从会话(session)当中获取loginuser的参数值即Root--%>
</body>
4.login_failure.jsp
<body>
<h1>登录失败,请检查用户名或密码</h1>
<span style = "color:red;font-size:25px;"><a href="login.jsp">点击返回</a></span> /*超链接到login.jsp即原登录页面*/
</body>
代码及相关注释如上,现在我们发布到Tormcat服务器上,相关截图如下。