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、 4jstl的包、添加<%@ 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

项目结果

 

posted on 2017-06-29 20:07  Falseone  阅读(1989)  评论(0编辑  收藏

导航