<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
<form action="loginServlet.jsp" method="post">
请输入账号:<input type="text" name="userid"/>
请输入密码:<input type="password" name="userpwd"/>
<input type="submit" value="提交"/>
form>
body>
html>
3.写一个主页 index.jsp 用于登录成功之后的跳转演示
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
如果你看到了我这行字,说明你登录成功了...
body>
html>
2.再写一个服务器端界面 loginServlet.jsp,用于对客户端请求做出响应
后台代码需要写在<% %>中
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
<%
//获取用户端表单提交过来的数据 userid
String userid = request.getParameter("userid");
//获取用户端表单提交过来的数据 userpwd
String userpwd = request.getParameter("userpwd");
//本来这里的id和密码均由数据库提供,但是鉴于本篇笔记只学习request请求与response响应,就假设id和password
if(userid.equals("admin")&&userpwd.equals("123456")){
//登陆成功,跳转到主页index.jsp
response.sendRedirect("index.jsp");
} else {
//登录失败,返回原地址login.jsp
//response.sendRedirect("login.jsp");
}
%>
body>
html>
启动服务器,运行结果如下
网址栏地址:
登录页面效果:
输入正确的账号admin与密码123456
点击提交之后,地址栏跳转到index.jsp页面
页面效果
4.假如登录失败,页面跳转回login.jsp页面,这样没有任何提示语句,用体验将会不好,这个时候需要我们在登录失败之后传递一句话给login.jsp页面,提示用户账户或者密码输入有误
修改之前登录失败:
这个时候需要将loginServlet.jsp页面登录失败的代码修改为:
//登录失败,不带数据过去,返回原地址
//response.sendRedirect("login.jsp");
//登录失败,需要带数据过去,由于数据为loginservlet页面的局部变量
//将login.jps复制到loginservlet页面使用此数据
request.setAttribute("msg", "登录失败");
request.getRequestDispatcher("login.jsp").forward(request, response);
由于需要在原页面的基础上显示数据,则原页面login.jsp中的form表单中需要加上代码:
<% if(request.getAttribute("msg")!=null){ %>
<div><%=request.getAttribute("msg").toString()%>div>
<%} %>
输入错误的账号密码:
地址栏并没有跳转回原地址login.jsp,仍然停留在服务器loginServlet.jsp页面
提示语句登录失败也显示出来
总结:jsp中用户端请求需要用到request,用户端提交表单之后,服务器通过request.getParameter(“name”),获取表单中的数据,服务器可以将这些数据放入数据库,也可以将这些数据与数据库读取的数据进行比较与判断,对用户端做出响应,服务器做出响应用到response,页面跳转用到response.sendRedirect(“地址”),如果这个时候服务器做出的响应需要将自己生成的提示性数据或者将数据库读取出来的数据传递给页面用于显示,则需要将原页面复制一份到本页面,用于使用该数据,这个时候用到request.setAttribute(“msg”, “自己生成的数据或者数据库读取的数据”);request.getRequestDispatcher(“需要复制的页面”).forward(request, response);用户端代码获取这些数据用于显示
提示:在编辑器中添加tomcat服务器之后,加入不对tomcat中文编码设置,可能会出现中文乱码的问题,应该在服务器第一次使用之前,配置服务器中文编码,让其与代码编辑器和html中文编码相同