第一章
1、請編寫一個格式良好的XML文檔,要求包含足球隊一支,隊名為Madrid,球員5人:Ronaldo、Casillas、Ramos、Modric、Benzema;籃球隊一支,隊名為Lakers,隊員2人:Oneal,Bryant。要含有注釋。
2、在XML Schema文檔中,定義一個雇員的年齡為18~58周歲之間。請寫出相應的元素聲明。
------第1題答案------
<?xml version="1.0" encoding="gb2312" standalone="yes"?> <球隊列表> <!-- 足球隊Madrid --> <球隊 類型="足球隊"> <隊名>Madrid</隊名> <隊員> <姓名>Ronaldo</姓名> <姓名>Casillas</姓名> <姓名>Ramos</姓名> <姓名>Modric</姓名> <姓名>Benzema</姓名> </隊員> </球隊> <!-- 籃球隊Lakers --> <球隊 類型="籃球隊"> <隊名>Lakers</隊名> <隊員> <姓名>Oneal</姓名> <姓名>Bryant</姓名> </隊員> </球隊> </球隊列表>
------第2題答案------
<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="18"/> <xs:maxInclusive value="58"/> </xs:restriction> </xs:simpleType> </xs:element>
第二章
1、如何將web應用發布到tomcat上localhost主機,請寫出至少3種實現方式?
2、請問在chapter02應用的web.xml文件中進行哪些配置,可以將welcome.html頁面配置成該應用的默認頁面?
------第1題答案------
1、直接將web應用部署到tomcat/webapps下
2、將web應用通過tomcat/conf/server.xml進行配置
3、創建一個xml文件,並配置web應用信息,將xml文件放置tomcat\conf\Catalina\localhost
------第2題答案------
在web-app標簽中進行如下配置即可:
<welcome-file-list> <welcome-file>welcome.html</welcome-file> </welcome-file-list>
第三章
1、簡述HTTP1.1協議的通信過程?
2、簡述POST請求和GET請求有什么不同?
------第1題答案------
1、客戶端與服務器端建立TCP連接。
2、客戶端可以向服務器端發送多個請求,並且在發送下個請求時,無需等待上次請求的返回結果。
3、服務器必須按照接受客戶端請求的先后順序依次返回響應結果。
4、客戶端發出關閉TCP連接的請求
5、服務器端關閉TCP連接
------第2題答案------
1、 POST傳輸數據大小無限制
2、POST比GET請求方式更安全
第四章
1、 編寫一個servlet,實現統計網站被訪問次數的功能。
2、請編寫一段程序,使程序能讀取該servlet的配置信息,從中獲得參數名為encoding對應的參數值,並輸出到頁面上。
------第1題答案------
步驟如下:
1)新建一個類ShowTimesServlet繼承HttpServlet,重寫doGet和doPost方法
2)在doPost方法中調用doGet方法,在doGet方法中實現統計網站被訪問次數的功能,用戶每請求一次servlet,使訪問次數times加1
3)獲取ServletContext,通過它的功能記住上一次訪問后的次數
具體代碼實現如下:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ShowTimesServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context = getServletContext(); Integer times = (Integer) context.getAttribute("times"); if (times == null) { times = new Integer(1); } else { times = new Integer(times.intValue() + 1); } //設置編碼,不然中文會變成亂碼 resp.setContentType("text/html;charset=GB2312"); //得到輸出流對象 PrintWriter out=resp.getWriter(); out.println("<html><head><title>"); out.println("頁面訪問統計"); out.println("</title></head><body>"); out.println("當前頁面被訪問了"); out.println("<font color=red size=20>"+times+"</font>次"); //設置屬性,將times保存到當前的上下文中 context.setAttribute("times",times); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
------第2題答案------
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); ServletConfig config = getServletConfig(); String param = config.getInitParameter("encoding"); out.println("encoding=" + param); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
第五章
請按照以下要求設計一個實現下載資源防盜鏈的類。
1) 創建一個DownManagerServlet類,繼承HttpServlet類。
2) 在doGet()方法中,判斷是否可以進行資源下載
------答案------
步驟如下:
1)創建一個DownManagerServlet類,使其繼承HttpServlet類並重寫該類的doGet()方法。
2)在doGet()方法中,使用HttpServletRequest對象的getHeader("referer")方法得到字段referer的值,並判斷是否可以進行資源下載。
3)如果不能下載,則進入下載頁。
具體代碼實現如下:
public class DownManagerServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); // 獲取referer頭的值 String referer = request.getHeader("referer"); // 獲取訪問地址 String sitePart = "http://" + request.getServerName(); if (referer != null && referer.startsWith(sitePart)) { // 處理正在下載的請求 out.println("dealing download ..."); } else { // 非法下載請求跳轉到download.html頁面 RequestDispatcher rd = request.getRequestDispatcher("/download.html"); rd.forward(request, response); } } }
第六章
1、 請使用Cookie技術實現顯示用戶上次訪問時間的功能。
2、請設計一個類,使用Session技術實現購物車功能。
------第1題答案------
步驟如下:
1)創建一個LastAccessServlet類,使其繼承HttpServlet類並重寫該類的doGet()方法。
2)在doGet()方法中,使用request.getCookies()得到所有cookie形成的cookie數組,並進行遍歷。
3)如果遍歷過程中找到cookie信息中存在lastAccess屬性則輸出,否則創建cookie對象,設置值為當前時間並發送給客戶端。
4)cookie的存活時間為1小時,訪問當前應用中的所有資源客戶端都回送cookie信息。
具體代碼實現如下:
package cn.itcast.chapter06.cookie.example; import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LastAccessServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); /* * 設定一個 cookie 的name : lastAccessTime * 讀取客戶端發送cookie 獲得用戶上次的訪問時間顯示*/ String lastAccessTime = null; // 獲取所有的cookie,並將這些cookie存放在數組中 Cookie[] cookies = request.getCookies(); for (int i = 0; cookies != null && i < cookies.length; i++) { if ("lastAccess".equals(cookies[i].getName())) { // 如果cookie的名稱為lastAccess,則獲取該cookie的值 lastAccessTime = cookies[i].getValue(); break; } } // 判斷是否存在名稱為lastAccess的cookie if (lastAccessTime == null) { response.getWriter().print("您是首次訪問本站!!!"); } else { response.getWriter().print("您上次的訪問時間"+lastAccessTime); } // 創建cookie,將當前時間作為cookie的值發送給客戶端 Cookie cookie = new Cookie("lastAccess",new Date().toLocaleString()); cookie.setMaxAge(60*60);//保存1小時 //訪問chapter06下資源時回送cookie cookie.setPath("/chapter06"); // 發送 cookie response.addCookie(cookie); } }
------第2題答案------
步驟如下:
1)創建一個PurchaseServlet類,使其繼承HttpServlet類並重寫該類的doGet()方法。
2)在doGet()方法中,使用request.getSession()實現購物車。
3)將session的id保存到cookie中。
4)重定向到購物車頁面。
具體代碼實現如下:
public class PurchaseServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { // 獲得用戶購買的商品 String id = req.getParameter("id"); if (id == null) { // 如果id為null,重定向到ListBookServlet頁面 String url = "/chapter06/ListBookServlet"; resp.sendRedirect(url); return; } Book book = BookDB.getBook(id); // 創建或者獲得用戶的Session對象 HttpSession session = req.getSession(); // 從Session對象中獲得用戶的購物車 List<Book> cart = (List) session.getAttribute("cart"); if (cart == null) { // 首次購買,為用戶創建一個購物車(List集合模擬購物車) cart = new ArrayList<Book>(); // 將購物城存入Session對象 session.setAttribute("cart", cart); } // 將商品放入購物車 cart.add(book); // 創建Cookie存放Session的標識號 Cookie cookie = new Cookie("JSESSIONID", session.getId()); cookie.setMaxAge(60 * 30); cookie.setPath("/chapter06"); resp.addCookie(cookie); // 重定向到購物車頁面 String url = "/chapter06/CartServlet"; resp.sendRedirect(url); } }
第七章
1、 請使用include標簽編寫兩個JSP頁面,
要求:輸出b.jsp頁面的內容,等待5秒,再輸出a.jsp頁面。
2、 已知一個datetime.jsp頁面用於顯示當前時間。請編寫jsp
文件用於顯示“歡迎來到傳智播客,現在的時間是:”+當前時間。
------第1題答案------
a.jsp代碼:
<%@ page contentType="text/html;charset=UTF-8"%> <%Thread.sleep(5000);%> a.jsp內的中文<br>
b.jsp代碼:
<%@ page contentType="text/html;charset=UTF-8"%> b.jsp內的中文<br> <jsp:include page="a.jsp" flush="true" />
------第2題答案------
<%@page language="java" contentType="text/html; charset=UTF-8"%> <html> <head> <title>歡迎你</title> </head> <body> 歡迎來到傳智播客,現在的時間是: <%@ include file="datetime.jsp"%> </body> </html>
第八章
1、請編寫一個類,實現通過對象得到完整的“包.類”名稱的功能。
2、設計一個程序使用BeanUtils工具為Person對象(JavaBean類)賦值。
1)直接生成User對象。
2)使用BeanUtils工具為name屬性賦值”youjun”,age賦值為31。
3)使用BeanUtils工具取出屬性值,並在控制台輸出。
------第1題答案------
package cn.itcast.javabean; class Cs{} public class GetClassNameDemo { public static void main(String[] args) { Cs cs = new Cs (); System.out.println(Cs. getClass().getName()); } }
------第2題答案------
package cn.itcast.chapter08.beanutils; import org.apache.commons.beanutils.BeanUtils; import cn.itcast.chapter08.javabean.Person; public class BeanUtilsDemo01 { public static void main(String[] args) throws Exception{ Person p = new Person(); //使用BeanUtils為屬性賦值 BeanUtils.setProperty(p, "name", "youjun"); BeanUtils.setProperty(p, "age", 31); //使用BeanUtils獲取屬性值 String name = BeanUtils.getProperty(p, "name"); String age = BeanUtils.getProperty(p, "age"); System.out.println("名字是"+name+",今年"+age+"歲"); } }
第九章
1、簡述什么是MVC設計模式?
2、簡述MVC設計模式中模型(Model)模塊的作用?
------第1題答案------
MVC模式將軟件程序分為3個核心模塊:模型(Model)、視圖(View)和控制器(Controller)
------第2題答案------
1、管理應用程序的業務數據
2、定義訪問控制和修改這些數據的業務規則
3、為視圖提供查詢模型狀態的方法