- EmployeeServlet.java
public void queryEmployeeList(HttpServletRequest request, HttpServletResponse response){
List<Employee> emps =empDao.queryList(Employee.class);
try {
String paramStr = "";
for(Employee emp : emps){
paramStr+=emp.toString()+";";
}
/*
* 重定向传递参数的时候必须做字符的转化,先将参数转化为encode,
* 然后在前端使用js代码,获取到url然后将参数获取到,再遍历出来
*/
String param = java.net.URLEncoder.encode(paramStr.substring(0,paramStr.length()-1),"UTF-8");
response.sendRedirect("html/employee.html?"+param);
} catch (IOException e) {
e.printStackTrace();
}
}
- Employee.java(员工实体类)
package entity;
import java.io.Serializable;
import annotation.Column;
import annotation.Tab;
@Tab(table = "employee")
public class Employee implements Serializable{
private static final long serialVersionUID = 1L;
@Column(name="emp_id",type=Integer.class,isNull = false,isPrimary = true,isAutoIncrement=true,isUnique = false)
private Integer emp_id;
@Column(name="emp_code",type=String.class,len = 30,isNull = false,isUnique = false)
private String emp_code;
@Column(name="emp_name",type=String.class,len = 30,isNull = true)
private String emp_name;
public Employee(){
super();
}
public Employee(String emp_code, String emp_name) {
this();
this.emp_code = emp_code;
this.emp_name = emp_name;
}
public Integer getEmp_id() {
return emp_id;
}
public void setEmp_id(Integer emp_id) {
this.emp_id = emp_id;
}
public String getEmp_code() {
return emp_code;
}
public void setEmp_code(String emp_code) {
this.emp_code = emp_code;
}
public String getEmp_name() {
return emp_name;
}
public void setEmp_name(String emp_name) {
this.emp_name = emp_name;
}
/**
* 重写父类的toString方法,将对象属性以field&value的形式组装起来
*/
@Override
public String toString() {
return "emp_id=" + emp_id + "&emp_code=" + emp_code + "&emp_name=" + emp_name;
}
}
- web.xml(配置请求路径与servlet类之间的映射)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>employee</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>EmployeeServlet</servlet-name>
<servlet-class>web.EmployeeServlet</servlet-class>
</servlet>
<!--类与请求地址的映射-->
<servlet-mapping>
<!--与<servlet>标签中的<servlet-name>一致,实现servlet映射,找到相应的servlet的处理类-->
<servlet-name>EmployeeServlet</servlet-name>
<!--servlet的请求地址,在浏览器中除去主机地址后的访问地址-->
<url-pattern>/EmployeeServlet</url-pattern>
</servlet-mapping>
</web-app>
- 前端employee.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>员工信息</title>
<link href="../css/employeeInfo.css" rel="stylesheet">
</head>
<script type="text/javascript" src="../js/LocationURL.js"></script>
<script type="text/javascript" src="../js/employeeInfo.js"></script>
<body></body>
</html>
- 前端employeeInfo.css
td{
width:100px;
height:30px;
border:1px dotted red;
text-align:center;
}
- 前端LocationURL.js(地址修改类文件)
function LocationURL(){
this.url=null;
}
function LocationURL(url){
this.url = url;
}
LocationURL.prototype={
/**
* 更改地址栏的url,将实际访问地址隐藏
*
* 使用历史对象history的history.pushState(state, title, url)
* 使用历史对象history的history.replaceState(state, title, url)
*/
reloadUrl : function(){
/**
* history.pushState(state, title, url)
* state:与要跳转到的URL对应的状态信息。
* title:不知道干啥用,传空字符串就行了。
* url:要跳转到的URL地址,不能跨域。
*/
history.pushState(this.url, this.url, this.url);
}
}
- 前端employeeInfo.js
window.onload=function(){
//创建一个表格元素
var tab = createTAB();
//创建表头
createTH(tab);
//根据数据库中查询出来的结构创建行
createTR(tab);
//将跳转地址修改为原始的跳转地址,实现隐藏地址栏的参数
new LocationURL(location()).reloadUrl();
//创建一个表格元素
function createTAB(){
var tab = document.createElement("table");
document.body.appendChild(tab);
return tab;
}
//创建表头
function createTH(tab){
//创建表头
var tr = tab.insertRow();
//创建表头的单元格元素
tr.insertCell().innerHTML = "选项";
tr.insertCell().innerHTML = "员工编号";
tr.insertCell().innerHTML = "员工姓名";
}
//根据表数据创建行
function createTR(tab,param_url){
//window.location.search获取问号及以后的参数
//window.location.href获取整个地址
var param_url = decodeURIComponent(window.location.href);
var param_ = param_url.split("?");
var param_0 = param_.length>1?param_[1]:null;
if(param_0==null){
return;
}
var param_1 = param_0.split(";");
if(param_1.length>0){
for(var i in param_1){
var tr = tab.insertRow(-1);
createTD(param_1[i],tr);
}
}
}
//根据表数据创建列,并设值
function createTD(param_1,tr){
var param_2 = param_1.split("&");
for(var i in param_2){
var param_3 = param_2[i].split("=");
var td = tr.insertCell();
for(var j in param_3){
if(i==0){
td.innerHTML="<input type='checkbox' style='width:17px;height:17px'/>";
}else{
td.innerHTML=param_3[1];
}
}
}
}
//实现地址替换功能,将实际请求地址隐藏
function location(){
//获取location对象
var local = window.location;
//根据location对象的属性组装主机地址
var localhost = local.protocol+ "//" + local.host ;
//当前地址
var localhref = localhost + local.pathname;
//servlet跳转的地址
var servlethref = localhost + "/employee/EmployeeServlet" ;
return servlethref;
}
}
- 项目部署后,启动Tomcat,在浏览器地址栏访问:
- http://localhost:8081/employee/EmployeeServlet
访问地址根据自己的主机确定
访问结果