1、准备
登录页面及servlet处理
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/0105/login" method="post">
用户名:<input type="text" name="name"/><br>
密码:<input type="password" name="pwd"/><br>
<input type="submit" value="登录"/><br>
</form>
</body>
</html>
LoginServlet.java
import java.io.IOException;
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 dao.PersonDao;
/**
* Servlet implementation class LoginServlet
*/
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
PersonDao dao=new PersonDao();
if(dao.login(name, pwd)) {
response.getWriter().write("登陆成功");
}
else {
response.getWriter().write("用户名密码输入错误!");
}
}
}
PersonDao.java
package dao;
import pojo.Person;
public class PersonDao {
public void savePerson(Person per) {
//保存数据库的操作
System.out.println(per+" 已保存到数据库!");
}
public boolean login(String name,String pwd) {
//数据库校验
if (name.startsWith("it")&&pwd.startsWith("123")) {
return true;
}
else {
return false;
}
}
}
JavaWeb中的转向
1、服务器端转发——RequestDispatcher
地址栏不发生变化
只发一次请求,返回一个响应
可以通过request.set(get)Attribute进行数据的传递
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
PersonDao dao=new PersonDao();
if(dao.login(name, pwd)) {
// response.getWriter().write("登陆成功");
RequestDispatcher rd = request.getRequestDispatcher("/ok.jsp");
rd.forward(request, response);
// response.sendRedirect("ok.jsp");
}
else {
// response.getWriter().write("用户名密码输入错误!");
RequestDispatcher rd = request.getRequestDispatcher("/loginerror.jsp");
rd.forward(request, response);
// response.sendRedirect("loginerror.jsp");
}
}
2、客户端重定向
地址栏会发生变化
发送两次请求,返回两次响应
不能通过request.set(get)Attribute进行数据的传递
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
PersonDao dao=new PersonDao();
if(dao.login(name, pwd)) {
// response.getWriter().write("登陆成功");
// RequestDispatcher rd = request.getRequestDispatcher("/ok.jsp");
// rd.forward(request, response);
response.sendRedirect("ok.jsp");
}
else {
// response.getWriter().write("用户名密码输入错误!");
// RequestDispatcher rd = request.getRequestDispatcher("/loginerror.jsp");
// rd.forward(request, response);
response.sendRedirect("loginerror.jsp");
}
}
将变量信息保存到request中,传参
1、request.setAttribute
LoginServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
PersonDao dao=new PersonDao();
if(dao.login(name, pwd)) {
// response.getWriter().write("登陆成功");
RequestDispatcher rd = request.getRequestDispatcher("/ok.jsp");
request.setAttribute("name", name);//将name变量放入request中,可在后续文件获取
rd.forward(request, response);
// response.sendRedirect("ok.jsp");
}
else {
// response.getWriter().write("用户名密码输入错误!");
RequestDispatcher rd = request.getRequestDispatcher("/loginerror.jsp");
rd.forward(request, response);
// response.sendRedirect("loginerror.jsp");
}
}
ok.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=request.getAttribute("name") %>,登陆成功!
</body>
</html>
2、地址栏参数
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
PersonDao dao=new PersonDao();
if(dao.login(name, pwd)) {
// response.getWriter().write("登陆成功");
RequestDispatcher rd = request.getRequestDispatcher("/ok.jsp?name="+name);
// request.setAttribute("name", name);//将name变量放入request中,可在后续文件获取
rd.forward(request, response);
// response.sendRedirect("ok.jsp");
}
else {
// response.getWriter().write("用户名密码输入错误!");
RequestDispatcher rd = request.getRequestDispatcher("/loginerror.jsp");
rd.forward(request, response);
// response.sendRedirect("loginerror.jsp");
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=request.getParameter("name") %>,登陆成功!
</body>
</html>