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

項目結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM