前言
要求:
编写一个简单的登录程序,要求登录页面中输入用户名和密码,用户点击登录按钮,提交给一个 Servlet 去处理,该 Servlet 要验证用户用户名和密码是否符合要求(这里就等于你提供的具体值)。如果符合要求,则将用户名写入 session 中,之后转到一个登录成功页面,在该页面页面显示欢迎 xxx (该 xxX 应由 session 获取),否则跳转到登录页面。
一、创建项目
我一共创建了三个页面
- 一个登录界面:login.jsp
- 一个登录处理界面:loginServlet.java
- 一个登录成功后的欢迎界面:success.jsp
-
二、代码
1.login.jsp
代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录</title>
</head>
<style>
/*这是设置样式,使他们居中*/
div.US{
text-align:center;
}
div.PW{
text-align:center;
}
div.MSG{
text-align:center;
}
div.BT{
text-align:center;
}
</style>
<body>
/*当点击提交按钮时表单数据提交到文件名为loginServlet中*/
<form method="post" action="/login/loginServlet">
<br>
<div class="US"> 用户名:<input type="text" name="loginName" value="" /></div><br>
<div class="PW">密 码:<input type="text" name="password" value="" /></div><br>
<br>
/*显示登录失败的信息*/
<div class="MSG">
<%
if(request.getAttribute("message")!=null){
out.print(request.getAttribute("message"));
}
%>
</div>
<br>
<div class="BT">
<input type="submit" name="submit" value="提交"/>
<input type="reset" name="teset" value="重置"/>
</div>
</form>
</body>
</html>
2.loginServlet.java
代码如下:
这里设置的用户名为:admin; 密码为:123
package Login;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
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 javax.servlet.http.HttpSession;
@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {
private static final long serialVersionUID=1L;
public loginServlet(){
super();
}
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
}
protected void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
String msg="";
doGet(request, response);
request.setCharacterEncoding("GBK");
//设置响应的文本类型为html,编码字符为GBK
response.setContentType("text/html;charset=GBK");
//获取表单数据,获取用户名文本框里的值和密码框里的值
String username=request.getParameter("loginName");
String password=request.getParameter("password");
//获取当前的session
HttpSession session=request.getSession();
//保存当前的username,password
session.setAttribute("Name", username);
session.setAttribute("Pass", password);
//判断用户名和密码是不是都正确
if(username.equals("admin")&&password.equals("123")){
//正确转到success.jsp界面(sendRedirect方法可以重定向到任何的URL)
//如果想要跳转到别的应用的资源就要用sendRedirect
response.sendRedirect("success.jsp");
}
else{
msg="登录失败:用户名或密码错误";
//如果使用request.setAttribute传递一些属性就需要用forward
request.setAttribute("message",msg);
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}
3.success.jsp
代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录成功</title>
</head>
<body>
<form action="loginServlet" method="get">
<%
String username=session.getAttribute("Name").toString();
%>
欢迎
<%
out.print(username);
%>
</form>
</body>
</html>
4.web.xml
据说 注释@WebServlet ("/loginServlet")与web.xml的作用差不多
三、结果显示
这里输入的是 用户名:admin 密码:12 ,很明显密码输入错误(正确为用户名:admin; 密码:123),所以返回了登录失败
这里输入的是 用户名:admin 密码:123 (正确为用户名:admin; 密码:123),登录成功,所以转到success.jsp,显示欢迎admin。
四、总结
再也不要上课不认真听讲了,代码很大部分是我借鉴了neymar116这位作者的,然后根据作业具体情况修改了一点,算是边看边码字边学吧。从JSP文件的创立到tomcat的配置,到后来终于把东西做出来了,真是一步一坎。
最后,好好上课,好好上课,好好上课,重要的话要说三遍!!!!!