javascript
JSP程序设计第二版--附带实验代码
1. JSP概述
JSP頁面的運行原理
(1) 把JSP頁面的HTML標記(頁面的靜態部分)發送給用戶的瀏覽器, 由瀏覽器中的HTML解釋器負責解釋執行HTML標記
(2) 負責處理JSP標記, 并將相關的處理結果發送給用戶的瀏覽器
(3) 執行"<%“和”%>"之間的Java程序片(JSP頁面的動態部分),并把執行結果交給用戶的瀏覽器顯示
(4) 當多個用戶請求一個JSP頁面時,Tomcat服務器為每個用戶啟動一個線程, 該線程負責執行常駐內存的字節碼文件來響應相關用戶的請求. 這些線程由tomcat服務器來管理, 將CPU的使用權在各個線程之間切換, 以保證每個線程都有機會執行字節碼文件, 這與傳統的CGI為每個用戶啟動一個進程相比, 效率要高得多.
怎么開啟和關閉tomcat服務器
如果想要修改Tomcat服務器的端口號, 應該修改哪一個文件? 能否將端口號修改為80?
修改tomcat服務器安裝目錄中conf文件夾中的配置文件: server.xml.只要沒有其他應用程序正在占用80端口, 就可以將端口設置為80
2. JSP頁面與JSP標記
<%!%>與<%%>之間聲明的變量有什么不同
<%!%>聲明的變量在整個JSp頁面都是有效, 是JSP的成員變量,所有用戶共享成員變量
<%%>之間聲明的變量是局部變量, 只能在當前JSP頁面的猴急程序片以及表達式部分中有效
是否允許一個JSP頁面同時含有以下兩種page指令
原因: 在一個JSP頁面中, 可以使用多個Page指令來指定屬性以及他的值,. 需要注意的是: 可以使用多個page指令指定import屬性幾個值, 但是其他屬性只能使用page指令指定一個值
這兩條是不允許的 <% @ page contentType="text/html; charset=GB2312" %> <% @ page contentType = "application/msword" %>是否允許JSP頁面同時含有如下兩個page指令
這兩條是允許的 <% @ page import="java.util.*" %> <% @ page import="java.sql.*" %>假設有兩個用戶訪問下列JSP頁面hello.jsp, 請問第一個訪問和第二個訪問hello.jsp頁面的用戶看到的頁面效果有何不同
<%!%>是方法和變量聲明, <%%>是對Java程序片進行執行, 其中<%!%>中的變量是成員變量, 可以多個JSp頁面共享, 而<%%>中的只是局部變量
<% ! int sum=10;void add(int m){sum= sum + m; } %> <% int n = 600;add(n); %> <% =sum %>第一個用戶看到的sum是610, 第二個用戶看到的是1210
請簡單敘述include指令標記和include動作的不同
include指令標記的作用是在JSP頁面出現該指令的位置處, 靜態插入一個文件, 即JSP頁面與插入的文件合并成為一個新的JSP頁面, 然后JSP引擎再將這個新的JSP頁面轉義成Java文件. 因此在插入文件之后, 必須保證新合成的JSp頁面符合JSP語法規則, 即能夠成為一個JSp頁面文件. include動作標記告訴JSP頁面動態加載一個文件, 不把JSP頁面中動作指令include所指定的文件與原JSP頁面合并成一個新的JSP頁面, 而是告訴Java解釋器, 這個文件在JSp運行時才被處理. 如果包含的文件是JSP文件, JSp引擎就會執行這個文件, 然后將執行結果發送到客戶端, 并且有客戶端負責顯示這些結果.;如果包含的文件是普通文件, 就將文件內容發送到客戶端, 有客戶端負責顯示
3. TAg文件與Tag標志
用戶可以通過瀏覽器直接訪問一個tag 文件嗎
不可以, tag文件可以被JSP頁面動態調用, 但是用戶不能夠通過該tag文件所在的web服務目錄直接訪問這個文件
Tag文件應該存放在怎樣的目錄中
如果某個Web服務目錄下的JSp頁面準備調用一個tag文件, 那么必須在該Web服務目錄之下, 建立Web服務目錄\WEB-INF\tags, 其中WEB-INF, tags都是固定的子目錄名稱, 而tags下的子目錄名字可以由用戶給定, 一個tags文件必須保存到tags目錄或者旗下的子目錄中
4. JSP內置對象
如果表單中提交的信息有漢字應該怎么處理
將獲取的字符串用ISO-8859-1進行編碼,并且將編碼存放到一個字節數組中, 然后再將這個數組轉換為字符串對象
response調用sendRedirect(URL url)方法的作用是什么
實現用戶的重定向
回答下列問題
(1) 一個用戶在不同的web服務目錄中的session對象相同嗎?
不相同
(2) 一個用戶在同一個web目錄下的不同子目錄中的session對象相同嗎
相同
(3) 如果用戶長時間不關閉瀏覽器, 用戶的session對象可能消失嗎?
可能消失
(4)用戶關閉瀏覽器之后,用戶的session一定消失嗎?
一定消失
5.JSp的文件操作
File對象能讀寫文件嗎
不能
File對象怎么獲取文件的長度
調用public long length()獲取
準備讀取文件A.java, 正確的是?
一下兩個
FileInputStream in = new FileInputStream("A.java"); FileReader fr = new FileReader(new File("A.java"));6. 在JSP中使用數據庫
什么是JDBC(Java Database Connecivity)
jdbc提供訪問數據庫的API,即一些由Java類和接口組成,是Java運行平臺的核心庫的一部分.
7. JSP與JavaBean
設Web服務目錄mymoon中的JSP頁面使用的一個bean,該bean的包名為blue.sky,請說明, 應當怎樣保存bean的字節碼
把創建bean的字節碼保存到mymoon\WEB-INF\classes\blue\sky中
創建一個名字為moon的bean, 該bean含有一個String類型, 名字為number的屬性.如果創建moon的java類沒有提供public String getNumber()方法, 在JSp頁面中是否允許使用getProperties標記獲取moon屬性的值?
不允許
tom.jiafei.cirlce是創建bean的類, 下列A-D中哪一個標記是正確創建session周期bean 的標記?
<jsp: useBean id = "cirlce" class="tom.jiafei.circle" scope="session">假設創建bean的類有一個int型的屬性number,下列A-D中哪一個方法是設置該屬性值的方法
public void setNumber(int number){this.number = number; }8. Java Servlet基礎
9. MVC與數據庫操作
在JSP中, MVC操作模式中的數據模型的角色有誰擔當, 控制器, 視圖呢?
數據模型由JavaBean擔當, 控制器又Servlet擔當, 視圖由JSP頁面擔當
MVC有什么好處
MVC的結構可以使Web程序更加具有對象化特征, 也更加容易維護
附加實驗代碼
<%@ page import="java.util.TreeSet" %> <%@ page import="java.util.Iterator" %> <%@ page import="java.io.File" %> <%@ page import="java.io.FileReader" %> <%@ page import="java.lang.reflect.Field" %> <%@ page import="java.io.BufferedReader" %><%-- Created by IntelliJ IDEA. --%><!-- 實驗1開始 --> <%--<%@ page contentType="text/html; ISO-8859-1" language="java"%>--%> <%--<html>--%> <%--<body bgcolor="yellow">--%> <%--<font size="3">--%> <%-- <%--%> <%-- for (int i = 1; i < 10; i ++)--%> <%-- for (int j = 1; j <= i ;j ++){--%> <%-- int mul = i * j;--%> <%-- out.print(i+"*"+j+"="+mul);--%> <%-- }--%> <%-- out.print("<br>");--%> <%-- %>--%> <%--</font>--%> <%--</body>--%> <%--</html>--%> <%--<%@ page contentType="text/html; ISO-8859-1" language="java"%>--%> <%--<html>--%> <!-- 實驗1結束 --><%--<h2>實驗二----輸入單詞程序開始</h2>--%> <%--<body bgcolor="yellow">--%> <%--<font size="3">--%> <%-- <form action="showDirectory.jsp" method="post">\--%> <%-- 請輸入單詞(用空格間隔):<input type="text" name="word"><br>--%> <%-- <input type="submit" name="submit" value="送出">--%> <%-- </form>--%> <%--</font>--%> <%--</body>--%> <%--</html>--%> <%--<%@ page contentType="text/html; ISO-8859-1" language="java"%>--%> <%--<html>--%> <%--<h2> 實驗2---展示單詞列表程序</h2>--%> <%--<body bgcolor="yellow">--%> <%--<font size="3">--%> <%-- <%!--%> <%-- TreeSet<String> dictionary = new TreeSet<>();--%> <%-- public void addWord(String s){--%> <%-- String word[] = s.split(" ");--%> <%-- for (int i = 0; i < word.length; i ++){--%> <%-- dictionary.add(word[i]);--%> <%-- }--%> <%-- }--%> <%-- %>--%> <%-- <%--%> <%-- String str = request.getParameter("word");--%> <%-- addWord(str);--%> <%-- Iterator<String> te = dictionary.iterator();--%> <%-- while (te.hasNext()){--%> <%-- String word = te.next();--%> <%-- out.print(" "+word);--%> <%-- }--%> <%-- --%> <%-- %>--%> <%--</font>--%> <%--</body>--%> <%--</html>--%> <%--<h2>實驗二----輸入單詞程序結束</h2>--%><!--------------------實驗3開始-----------------------> <!--leader.txt靜態文本實驗--> <%--<%@ page contentType="text/html; ISO-8859-1" language="java"%>--%> <%--<a href="first.jsp">鏈接到頁面1</a>--%> <%--<a href="second.jsp">鏈接到頁面2</a>--%> <%--<a href="third.jsp">鏈接到頁面3</a>--%><%--<%@ page contentType="text/html; ISO-8859-1" language="java" %>--%> <%--<html>--%> <%--<body bgcolor="yellow">--%> <%--<P> 這是頁面1--%> <%--<%@ include file="leader.txt"%>--%> <%--</body>--%> <%--</html>--%> <%--<%@ page contentType="text/html; ISO-8859-1" language="java" %>--%> <%--<html>--%> <%--<body bgcolor="yellow">--%> <%--<P> 這是頁面2--%> <%-- <%@ include file="leader.txt"%>--%> <%--</body>--%> <%--</html>--%> <%--<%@ page contentType="text/html; ISO-8859-1" language="java" %>--%> <%--<html>--%> <%--<body bgcolor="yellow">--%> <%--<P> 這是頁面3--%> <%-- <%@ include file="leader.txt"%>>--%> <%--</body>--%><%--</html>--%> <!--------------------實驗3結束-----------------------><!--------------------實驗4開始-----------------------> <%@page contentType="text/html; ISO-8859-1" language="java" %> <html> <body>讀取名字是ok.txt的文件<jsp:include page="readFile.jsp"><jsp:param name="file" value="xxxx"/></jsp:include> </body> </html><%@ page contentType="text/html; ISO-8859-1" language="java" %> <html> <body> <P> <FONT size="4">this is ReadFile.jsp</FONT> <%String s = request.getParameter("file");File file = new File(s);if (file.exists()){out.print("<BR>文件"+s+"的內容是:");FileReader in = new FileReader(file);BufferedReader bin = new BufferedReader(in);String line = null;while ((line=bin.readLine() )!= null){out.print("<br>"+line);}}else{%><jsp:forward page="error.jsp"><jsp:param name="mess" value="File Not Found"/></jsp:forward><%}%></body> </html> <%@ page contentType="text/html; ISO-8859-1" language="java"%> <html> <body>< </body> </html> <!--------------------實驗4結束-----------------------><!--------------------實驗5開始-----------------------> <%@ page contentType="text/html; ISO-8859-1" language="java"%> <h2>動態加載tag的jsp文件</h2> <%@ taglib prefix="rili" tagdir="/WEB-INF/tags" %> <html> <body><P>調用tag文件來顯示日歷<rili:showCalendar year="2012" month="12"/></body> </html><%@ tag pageEncoding="GB2312" %> <%@ tag import="java.util.*" %> <%@ page import="java.util.regex.Pattern" %> <%@ page import="javax.sound.midi.Soundbank" %> <%@ attribute name="year" required="true" %> <%@ attribute name="month" required="true" %> <%int y = 1999, m = 1;String [] day = new String[42];try{y = Integer.parseInt(year);m = Integer.parseInt(month);Calendar rili = Calendar.getInstance();rili.set(y, m-1 ,1);//0表示1月, 11表示12月int 星期幾 = rili.get(Calendar.DAY_OF_WEEK)-1;int dayAmount = 0;if (m == 1 || m==3 || m==5 || m==7 || m==8 || m == 12){dayAmount=31;}if (m == 4 || m == 6 || m == 9 || m == 11){dayAmount=30;}if (m == 2){if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0){dayAmount=29;}else{dayAmount=28;}}for (int i = 0; i < 星期幾; i++){day[i] = "--";}for (int i = 星期幾, n=1; i < 星期幾+dayAmount; i ++){day[i] = String.valueOf(n);n ++;}for (int i = 0; i < 星期幾; i++){day[i]="--";}}catch (Exception e){e.printStackTrace();out.print("年份或者月份不合理");} %> <h3><%=year%>年<%=month%>>月的日歷:</h3> <table border="1"><tr><th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th><th>星期五</th><th>星期六</th><th>星期天</th></tr><%for (int n = 0; n < day.length; n +=7){%><tr><%for (int i = n ; i < n+7; i ++){%><td><%= day[i]%></td><% }}%></tr>}%> </table> <!--------------------實驗5結束-----------------------> <!--------------------實驗6開始-----------------------> <%@ page contentType="text/html; ISO-8859-1" language="java" %> <html> <body><form action="receiveNumber" method="post">輸入運算數, 選擇運算符號: <br><input type="text" name="numberOne" size="6"><select name="operator"><option value="+">+</option><option value="-">-</option><option value="*">*</option><option value="/">/</option></select><input type="text" name="numberTwo" size="6"><br><input type="submit" name="submit" value="提交你的選擇"></form> </body> </html><%@ page contentType="text/html; ISO-8859-1" language="java" %> <%@ taglib prefix="computer" tagdir="/WEB-INF/tags" %> <html> <body> <%String a = request.getParameter("numberOne");String b = request.getParameter("numberTwo");String operator = request.getParameter("operator");if (a == null || b == null){a = ""; b = "";}if (a.length() > 0 && b.length() > 0){%><computer: Computer numberA = "<%=a%>" numberB = "<%=b%>" operator="<%=operator%>"計算結果: <%=a%><%=operator%><%=b%>=<%=result%><%} %><a href="inputNumber.jsp">返回輸入數據界面</c omputer:> </body> </html><%@ tag pageEncoding="GB2312" %> <%@ attribute name="numberA" required="true"%> <%@ attribute name="numberB" required="true"%> <%@ attribute name="result" required="true"%> <%@ variable name-given="result" scope="AT_END"%><%try{double a = Double.parseDouble(numberA);double b = Double.parseDouble(numberB);double r = 0;if (operator.equals("+")){r= a+b;}else if(operator.equals("-")){r=a-b;}else if(operator.equals("*")){r=a*b;}else if(operator.equals("/")){r=a/b;}jspContext.setAttribute("result", String.valueOf(r));}catch (Exception e){e.printStackTrace();jspContext.setAttribute("result", "發生異常:"+e);} %> <!--------------------實驗6結束-----------------------> <!--------------------實驗7開始-----------------------><%@ page contentType="text/html; ISO-8859-1" language="java"%> <html> <body><font><form action = "draeCircle.jsp" method="post">輸入園的半徑: <input type="text" name="radius" size="6"><input type="submit" name="submit"></form></font></body> </html> <%@ page contentType="text/html; ISO-8859-1" language="java"%> <%@ page import="java.awt.*"%> <%@ page import="java.util.*"%> <%@ page import="java.io.*"%> <%@ page import="java.awt.image.*"%> <%@ page import="java.awt.geom.*"%> <%@ page import="com.sun.image.codec.jpeg.*"%> <%@ page import="java.nio.Buffer" %> <html> <body> <%String R = request.getParameter("radius");try{double number = Double.parseDouble(R);if (number < 0 || number > 100){response.setContentType("text/plain;charset=GB2312");out.print(number+"作為園的半徑不合理");}else if (number > 0 && number <= 100){response.setContentType("image/jpeg");int width = 100, height = 100;BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics graphics = image.createGraphics();graphics.setColor(Color.WHITE);graphics.fillRect(0, 0, width, height);Graphics2D graphics2D = (Graphics2D) graphics;Ellipse2D circle = new Ellipse2D.Double(0, 0, number, number);graphics2D.setColor(Color.BLUE);graphics2D.fill(circle);graphics.dispose();OutputStream outputStream = response.getOutputStream();JPEGImageEncoder encoder = JPEGImageEncoder.createJPEGEncoder(outputStream);encoder.encode(image);}}catch (Exception e){e.printStackTrace();response.sendRedirect("inputRadius.jsp");} %> </body> </html> <!--------------------實驗7結束-----------------------> <!--------------------實驗8開始-----------------------> <%@ page contentType="text/html; ISO-8859-1" language="java"%> <html><P>選擇所有圖書 <table><tr><td><a href="orderForm.jsp ? bookMess=Java面向對象"></a> </td></tr></table> </html><%@ page contentType="text/html; ISO-8859-1" language="java"%> <%@ page import="java.util.*"%> <%String book = request.getParameter("bookMess");if (book != null){StringTokenizer fenxi = new StringTokenizer(book, "@");String bookName = fenxi.nextToken();String bookISBN = fenxi.nextToken();session.setAttribute(bookISBN, book);} %> <html><%@ page contentType="text/html; ISO-8859-1" language="java"%> <%Enumeration keys = session.getAttributeNames();while (keys.hasMoreElements()){String key = (String) keys.nextElement();book = session.getAttribute(key);if (book != null){StringTokenizer fexi = new StringTokenizer(book, "@");}} %> </html> <!--------------------實驗8結束----------------------->總結
以上是生活随笔為你收集整理的JSP程序设计第二版--附带实验代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工作61:动态绑定
- 下一篇: JSP程序设计 第2版 pdf