JSP与Servlet
注意每个层都是独立,需要通过指定定的url联系方式才能相互传递数据,JSP页面仅仅是显示处理结果而已,真正处理数据的是Servlet控制层。
流程:
【1】首先JSP页面是通过get或者post方法指定特定的URL向服务器发送请求,
【2】tomcat服务器会根据请求url的资源路径,创建对应的LoginServlet的对象
【3】tomcat服务器,会创建request和response对象,request对象中封装的JSP页面请求信息数据
【4】Servlet控制层可以通过request对象获取JSP页面请求信息数据,Servlet控制层通过response对象设置响应信息数据
【5】服务器在浏览器做出响应之前会从response对象中拿Servlet控制层设置的响应信息数据
实现登录成功跳转
LoginServlet.jsp
<!--JSP页面设置参数name通过get方法指定URL向Servlet传输数据-->
<form action="LoginServlet" method="get">
账号<input type="text" name="myname">
密码<input type="text" name="mypassword">
<input type="submit" value="登录">
</form>
LoginServlet
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServerException,IOException,ServletException{
//一般情况都是将doGet的数据传给doPost处理
//因为不需要两个地方都写方法
this.doPost(request, response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServerException,IOException,ServletException{
//【1】解决中文数据的编码集问题
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//【2】获取数据
//Servlet通过getParameter("name")方法与JSP页面设置name属性名相对
//JSP通过get方法指定URL向Servlet传输数据
String myname=request.getParameter("myname");
String mypassword=request.getParameter("mypassword");
System.out.println(myname+mypassword);
//向客户端响应输出内容
PrintWriter pw=response.getWriter();
if("admin".equals(myname)&&"123".equals(mypassword)){
//注意使用setHeader("Location", "url"),需要设置状态码
//根据Http1.1协议规范
//【1】设置状态码 302重新定位状态码
response.setStatus(302);
//【2】定位调转的位置是哪个页面
response.setHeader("Location", "jsp/SelectAll.jsp");
}else {
pw.write("回去洗洗睡吧");
}
}
}
成功结果: