一、需求分析
做一个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
项目结果