跳转方式有两种:
1.重定向 resp.sendRedirect(“URL”),跳转后地址会发生改变
2.请求转发 req.getRequestDispatcher("URL").forward(req, resp); 跳转后地址不会改变
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="LoginServlet" method="post">
username:<input type="text" name="username"><br>
password:<input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
package com.neusoft.servlet;
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;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String uname=req.getParameter("username");
String upass=req.getParameter("password");
if(uname.equals(upass)){
//resp.sendRedirect("MainServlet?message="+message);//重定向传值
String message="this is Servlet";
req.setAttribute("message", message);//key-value 把数据放入request中,指定一个key值,
//用setAttribute存数据跳转时必须采用请求转发,否则获取不到数据。
req.getRequestDispatcher("MainServlet").forward(req, resp);
//请求转发的请求方式与上一次请求相同,即上一次请求是post,
//MainServlet的请求方式也是post
}else{
resp.sendRedirect("login.html");
}
}
}
package com.neusoft.servlet;
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;
@WebServlet("/MainServlet")
public class MainServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String msg=req.getAttribute("message").toString();
//String msg=req.getParameter("message");//重定向传值
resp.getWriter().print("Main"+" "+msg);
}
}