項目中的包命名規則,一般如下: com.amos.domain 封裝JavaBean,一般我喜歡用model命名這個包 com.amos.dao 封裝dao層 com.amos.dao.daoimpl 實現dao層接口 com.amos.service 封裝service層 com.amos.service.serviceiml 實現service層接口 com.amos.web.controller業務邏輯層 com.amos.web.listener 監聽器 com.amos.web.filter 過濾器 com.amos.utils 存放工具類 com.amos.test 測試類 按照上面的分類,可以方便維護. WEB-INF/jsp將jsp存放到WEB-INF目錄下,這樣可以增加安全性 二.el表達式 EL表達式用於獲取數據,在JSP頁面中可使用${標識符}的形式,通知JSP引擎調用pageContext.findAttribute()方法,以標識符為關鍵字從各個域對象中獲取對象。如果域對象中不存在標識符所對應的對象,則返回結果為””(注意,不是null)。 示例:使用EL表達式獲取request、session、applection域中的數據。 EL表達式中也可以使用${customerBean.address}的形式來訪問JavaBean對象的屬性。 示例:使用EL表達式獲取Bean屬性。 EL表達式也可使用類如${1==1}的形式進行簡單的邏輯判斷。 復制代碼 <%@page import="java.util.*"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@page import="com.amos.model.*"%> <%@ page isELIgnored="false"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>el表達式學習</title> </head> <body> 第一種,簡單取值: <% String data = "hi,amos!"; request.setAttribute("data", data); %> ${data} <br> 第二種,從bean中取值: <% Person p = new Person(); p.setName("amosli"); session.setAttribute("person", p); %> ${person.name} <br> <%=((Person) session.getAttribute("person")).getName()%><br> 第三種:從復雜bean中取值: <% Person person1 = new Person(); Address a = new Address(); a.setCity("上海"); person1.setAddress(a); application.setAttribute("p1", person1); %> ${p1.address.city} <br> 第四種:從集合中取值: <% List list = new ArrayList(); list.add(new Person("amos")); list.add(new Person("li")); list.add(new Person("amosli")); list.add(new Person("hi")); list.add(new Person("hi_amos")); application.setAttribute("personlist", list); %> ${personlist[0].name } <br> <% Map map = new HashMap(); map.put("aa", new Person("aaaa")); map.put("cc", new Person("cccc")); map.put("dd", new Person("dddd")); map.put("ee", new Person("eeee")); map.put("11", new Person("111")); request.setAttribute("map", map); %> ${map.dd.name }<br> <%-- ${map.11.name } 一般情況下用點號進行取值,如果點號取不出來值,那麼可以用[]來代替. --%> ${map['11'].name }<br> 獲取當前應用的名稱: ${pageContext.request.contextPath } </body> </html> 復制代碼 結果: 注意:el表達式不能用的解決方法,我這裡是2.3版本的,web.xml中有如下代碼: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > 解決方法是在jsp頁面中加入: <%@ page isELIgnored="false"%> 三.jstl標簽庫的使用 1.關於JSTL標簽庫 JSTL是sun公司開發的一套標簽庫,使用JSTL可以在頁面中實現一些簡單的邏輯,從而替換頁面中的腳本代碼。 在頁面中使用JSTL標簽需完成以下2個步驟: 1、導入jstl.jar和standerd.jar這兩個JSTL的jar文件。 2、在JSP頁面中使用<%@ tablib url=“” prifix=“” %>元素導入標簽庫。 JSTL標簽庫中常用標簽: <c:foreach var=“” items=“”> <c:if test=“”> 我這裡用的是maven管理jar包的,所以只需要引入: <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> 或者直接下載:http://repo1.maven.org/maven2/jstl/jstl/1.2/jstl-1.2.jar 2.引入標簽庫 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3.示例: 復制代碼 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page isELIgnored="false"%> <%@page import="java.util.*,com.amos.model.*" %> <%@ 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>jstl標簽學習</title> </head> <body> <br> 從集合中取值: <% List list = new ArrayList(); list.add(new Person("amos")); list.add(new Person("li")); list.add(new Person("amosli")); list.add(new Person("hi")); list.add(new Person("hi_amos")); application.setAttribute("personlist", list); %> ${personlist[0].name } <br> <c:forEach var="list" items="${ personlist}"> <c:out value="${list.name }"></c:out><br> </c:forEach> <% Map map = new HashMap(); map.put("aa", new Person("aaaa")); map.put("cc", new Person("cccc")); map.put("dd", new Person("dddd")); map.put("ee", new Person("eeee")); map.put("11", new Person("111")); request.setAttribute("maps", map); %> <c:forEach var="map" items="${maps }"> ${map.key}:${map.value.name }<br> </c:forEach> </body> </html>