- request:封装了由 WEB 浏览器或其他客户端生成的 HTTP 请求的细节(参数、属性、头标和数据)
- out:代表输出流对象
- response:封装了返回到 HTTP 客户端的输出,向页面作者提供设置响应投标和状态码的方式
- request作用域:用户的请求周期
通过用户登录实践:
建立用户类
Emp
,存储用户信息;- 声明定义:账户ID,用户名,密码,邮箱
- 声明定义构造函数
- 声明定义属性方法
建立数据库类'DBUtil`,存储用户信息;
- 调用账户密码类
Emp
作为私有成员变量 static
静态初始化变量模拟数据库表记录- 声明定义静态方法比较账户与密码是否匹配
- 调用账户密码类
登录表单处理 Jsp 搭建
- 搭建表单:form(action) -> tr -> td -> input
- css 渲染居中:text-align -> maigin(0 auto)
control.jsp
搭建- 通过
name
属性获得account
和password
- 通过
request
和Parameter
来获得account
和password
值 - 渲染
- 通过
index.jsp代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import = "java.util.*" %>
<%@ page import = "java.text.*" %>
<!DOCTYPE html>
<html>
<head>
<title>人事管理系统</title>
<style type="text/css">
*{
margin:0;
padding: 0;
}
div form{
width:250px;
height:100px;
text-align:center;
margin: 0 auto;
}
body h3{
width:150px;
heght:30px;
text-align:center;
margin: 0 auto;
}
</style>
</head>
<body>
<h3 class="header">人事管理部</h3>
<hr>
<div>
<!-- form 封装了所有用户可以操作的一些内容 ,可以在提交表单的时候将表单内容提交给服务器端-->
<!-- action代表了服务器端的处理程序 -->
<form class="to" action="control.jsp">
<table>
<tr>
<td>账号:</td>
<td><input type="text" name="account"/></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"/></td>
</tr>
<tr class="bottom">
<td><input type="submit" value="登录"/></td>
</tr>
</table>
</form>
</div>
</body>
</html>
control.jsp代码
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="cn.onexzb.bean.*" %>
<%@ page import="cn.onexzb.db.*" %>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
<style type="text/css">
table{
width:300px;
height:200px;
margin:0 auto;
text-align:center;
}
</style>
</head>
<body>
<%
String account = request.getParameter("account");
String password = request.getParameter("password");
Emp e = new Emp(account, null, password, null);
boolean flag = DBUtil.selectEmptyByAccountAndPassword(e);
if(flag){
%>
<h3 align="center">欢迎进入人事管理系统!</h3>
<hr>
<table border="1">
<%for(String key : DBUtil.map.keySet())
{
Emp emp = DBUtil.map.get(key);
%>
<tr>
<td><%= emp.getAccount() %></td>
<td><%= emp.getName() %></td>
<td><%= emp.getEmail() %></td>
</tr>
<% } %>
</table>
<%
}
else{
out.println("用户名或密码错误!");
}
%>
</body>
</html>
Eml 类代码
package cn.onexzb.bean;
public class Emp {
private String account;
private String name;
private String password;
private String email;
public Emp(String account, String name, String password, String email) {
super();
this.account = account;
this.name = name;
this.password = password;
this.email = email;
}
public Emp() {
// TODO Auto-generated constructor stub
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
DBUtil 类代码
package cn.onexzb.db;
import java.util.Map;
import java.util.HashMap;
import cn.onexzb.bean.*;
public class DBUtil {
public static Map<String, Emp> map = new HashMap<String, Emp>();
// 初始化静态变量
static {
map.put("101", new Emp("101", "AA", "123456", "AA@onexzb.cn"));
map.put("102", new Emp("102", "BB", "123456", "BB@onexzb.cn"));
map.put("103", new Emp("103", "CC", "123456", "CC@onexzb.cn"));
map.put("104", new Emp("104", "DD", "123456", "DD@onexzb.cn"));
}
public static boolean selectEmptyByAccountAndPassword(Emp emp) {
boolean flag = false;
for(String key : map.keySet()) {
Emp e = map.get(key);
// 如果存在这个账户并且对应密码正确的话则 flag = true
if(emp.getAccount().equals(e.getAccount())
&& emp.getPassword().equals(e.getPassword())) {
flag = true;
break;
}
}
return flag;
}
}