jsp-类的封装-集合的应用
一、需求分析

做一个jsp页面,动态显示信息表的内容。
1、 做一个实体类:EmployeeInfo (包含4个字段)
2、 如图模拟生成3条数据,本质上就是new EmployeeInfo 3个实例,
每个实例代表一行记录(后面这3条记录放到数据库,本例暂时不处理)
3、 处理这3条数据的过程,不用考虑界面(采用java代码与jsp UI页面分离)
编写一个类和方法,处理数据问题,返回值为List<EmployeeInfo>
把3条数据(EmployeeInfo)也就是3个EmployeeInfo的实例,把它们添加到List中
换句话说,就是这个List就是代表这个数据集合。
注意:
a、 此类为业务类(处理业务逻辑的类),要养成习惯:先写接口
b、 调用者使用此类时,应该不不关心谁是实现类,只关心接口以及其API
把整个List,丢给jsp用于显示数据,呈现出一个表格的状态
二、具体操作流程
1、先写实体类(先写属性,然后添加get/set)
1、File --> New --> Dynamis Web Project

2、建包(entity)
Students --> src --> 右键 --> New --> package -->entity


3、建立1个实体类:EmployeeInfo.java
entity --> 右键 --> New --> Class

4、对实体例,添加私有的属性,属性应该跟二维表的字段一一对应

5、一键生成get,set
StudnetInfo.java -- 右键 --> Source --> Generate Geters and Setter.....


2、建立一个业务逻辑的接口以及实现类,有几个业务逻辑,就有几个方法
1、先建包service
Students --> src --> 右键 --> New --> package -->service


2、建立接口EmployeeService.java
service --> 右键 --> New --> Class --> EmployeeService


3、建立一个实现类EmployeeServiceImpl.java
service --> 右键 --> New --> Class --> StudentServiceImpl

4、建立一个实现类StudentServiceImpl.java
需要:implements EmployeeService这个接口
public class EmployeeServiceImpl implements EmployeeService {
}
实现未实现方法

具体代码如下:
package service; import java.util.ArrayList; import java.util.List; import entity.EmployeeInfo; public class EmployeeServiceImpl implements EmployeeService{ @Override public List<EmployeeInfo> getAllEmployee() { List<EmployeeInfo> employeeList=new ArrayList<EmployeeInfo>(); EmployeeInfo em1=new EmployeeInfo(); EmployeeInfo em2=new EmployeeInfo(); EmployeeInfo em3=new EmployeeInfo(); em1.setId("001"); em1.setName("张三"); em1.setSex("男"); em1.setNumber("136018551"); em2.setId("002"); em2.setName("李四"); em2.setSex("男"); em2.setNumber("138511222"); em3.setId("003"); em3.setName("王五"); em3.setSex("男"); em3.setNumber("138588555"); employeeList.add(em1); employeeList.add(em2); employeeList.add(em3); return employeeList; } }
5、建立一个jsp页面,调用service获取数据集List
a、 新建一个jsp、 倒4个jstl的包、添加<%@ taglib prefix="c"… 、写遍历结果集合的代码
(1)、 JSTL的引入可以让JSP代码中<%%>等代码消失掉,再结合EL表达式,会更加方便以及美观。
(2)、各套框架(还没有学习,比如struts,SpringMVC等)都有自己的标签库,这时JSTL可以作为公共、通用的,横行于各框架中。
操作:下载JSTL包
http://tomcat.apache.org/taglibs/





第二步:新建一个jsp页面
WebContent ---> 鼠标右键 --->New ----> Jsp File



设置表头调用JSTL包

c、调用service
测试代码如下:
<%
EmployeeService employeeService = new EmployeeServiceImpl();
List<EmployeeInfo> employeeList=new ArrayList<EmployeeInfo>();
out.println(employeeList.size());
%>
修改一下代码,遍历集合(for)
<%
EmployeeService employeeService = new EmployeeServiceImp
List<EmployeeInfo> employeeList=new ArrayList<EmployeeInfo>();
for(EmployeeInfo employee:employeeInfoList){
out.println(employee.getName()+"<br>");
}
d、修改jsp页面的html代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="C"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<table width="50%" border="1" cellspacing="1" cellpadding="1" align="center">
<tr>
<td>编号</td>
<td>姓名</td>
<td>性别</td>
<td>号码</td>
</tr>
<C:forEach items="${employeeInfoList}" var="h">
<tr>
<td>${h.id}</td>
<td>${h.name}</td>
<td>${h.sex}</td>
<td>${h.number}</td>
</tr>
</C:forEach>
</table>
</body>
</html>

6、servlet的引入

这是修改后模式:MVC模式
servlet的使用:
7、建立actoin包
在doGet方法中写代码;
a. 呼叫service
b. 把结果集List放到request对象
跳转到jsp中
Students --> src --> 右键 --> New --> package -->action

action --> 鼠标右键 --> new -->Servlet






request对象包含的内容以及获取




7、建立个主页index.jsp


用response.sendRedirect做转向其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以用sendRedirect时,浏览器的地址栏上可以看到地址的变化。
8、运行项目
项目---> 右键----->Run As ------>Run on Server


项目结果

浙公网安备 33010602011771号