คำตอบสำหรับปัญหาที่คุณอาจพบใน JSP
1. จะผสม Jsp และ SSI #include ได้อย่างไร?
Pure HTML สามารถรวมไว้ใน JSP ได้ดังนี้:
< !--#include file="data.inc"-- >
แต่ถ้า data.inc มี JSP CODE เราสามารถใช้:
< <A href=" mailto:%@include">%@include</A > file="data.inc"% > </P>
2. จะรัน JSP ที่ปลอดภัยสำหรับเธรดได้อย่างไร
เพียงเพิ่มคำสั่งต่อไปนี้
< %@ หน้า isThreadSafe="false" % > </P>
3. JSP ประมวลผลข้อมูลในรูปแบบ HTML อย่างไร
เพียงใช้วัตถุคำขอในตัวดังต่อไปนี้:
<%
รายการสตริง = request.getParameter("รายการ");
int HowMany = new Integer(request.getParameter("units")).intvalue();
% > </P>
4. จะรวมไฟล์สแตติกใน JSP ได้อย่างไร?
การรวมแบบคงที่มีดังนี้: < %@ include file="copyright.html" % >
การรวมแบบไดนามิกมีดังนี้: < jsp:include page="copyright.html" flush="true"/ > </P>
5. จะใช้ความคิดเห็นใน JSP ได้อย่างไร?
มีสี่วิธีหลัก:
1. < %-- และ --% >
2. -
3. /**และ**/
4. < !--และ-- > </P>
6. จะดำเนินการเปลี่ยนเส้นทางการสืบค้นใน JSP ได้อย่างไร?
ใช้วิธีการต่อไปนี้: response.sendRedirect(" <A href=" http://ybwen.home.chinaren.com/index.html">http://ybwen.home.chinaren.com/index.html</ A >");
คุณยังสามารถเปลี่ยนแอตทริบิวต์ HTTP HEADER ได้ทางกายภาพดังนี้:
<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
สตริง newLocn="/newpath/index.html";
response.setHeader("ตำแหน่ง",newLocn);
% > </P>
7. จะป้องกันไม่ให้เอาต์พุตใน JSP หรือ SERVLET ถูกบันทึกใน CACHE โดย BROWSER ได้อย่างไร
เพียงเพิ่มสคริปต์ต่อไปนี้ที่จุดเริ่มต้นของไฟล์ JSP:
<%
response.setHeader("แคชควบคุม", "ไม่มีร้านค้า"); //HTTP 1.1
response.setHeader("Pragma", "ไม่มีแคช"); //HTTP 1.0
response.setDateHeader ("หมดอายุ", 0); // ป้องกันการแคชที่พร็อกซีเซิร์ฟเวอร์
% > </P>
8. จะตั้งค่าคุกกี้ใน JSP ได้อย่างไร?
COOKIE ถูกส่งเป็นส่วนหนึ่งของ HTTP HEADER และสามารถตั้งค่าได้ดังนี้:
<%
คุกกี้ mycookie = คุกกี้ใหม่ ("aName", "avalue");
การตอบสนอง addCookie (mycookie);
% > </P>
9. จะลบคุกกี้ใน JSP ได้อย่างไร?
<%
คุกกี้ killMyCookie = คุกกี้ใหม่ ("mycookie", null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
การตอบสนอง addCookie (killMyCookie);
% > </P>
10. วิธีหยุดการดำเนินการของ JSP ในระหว่างการประมวลผลคำขอ JSP มีดังนี้:
<%
ถ้า (request.getParameter("wen") != null) {
//ทำอะไรสักอย่าง
} อื่น {
กลับ;
-
% > </P>
11. วิธีกำหนดวิธีการใน JSP คุณสามารถกำหนดวิธีการได้ แต่คุณไม่สามารถเข้าถึงออบเจ็กต์ในตัวของ JSP ได้โดยตรง แต่ส่งผ่านวิธีพารามิเตอร์ ดังต่อไปนี้:
<%!
สตริงสาธารณะ HowBadFrom (คำขอ HttpServletRequest) {
HttpSession ses = req.getSession();
-
กลับ req.getRemoteHost();
-
%>
<%
out.print("โดยทั่วไปแล้ว lao lee ไม่ใช่ baddie ");
%>
< %= HowBadFrom(ร้องขอ) % > </P>
12. หาก BROWSER ปิดคุกกี้ ฉันจะเปิด SESSION ใน JSP เพื่อติดตามและใช้การเขียน URL ใหม่ได้อย่างไร ดังนี้:
สวัสดี1.jsp
< %@ เซสชั่นเพจ = "true" % >
<%
จำนวนเต็ม num = จำนวนเต็มใหม่ (100);
session.putvalue("num",num);
สตริง url =response.encodeURL("hello2.jsp");
%>
< a href=< %=url% > >hello2.jsp< /a > </P>
hello2.jsp
< %@ เซสชั่นเพจ = "true" % >
<%
จำนวนเต็ม i= (จำนวนเต็ม )session.getvalue("num");
out.println("ค่าตัวเลขในเซสชันคือ "+i.intvalue());
% > </P>
13. สามารถส่งอีเมลใน JSP ได้หรือไม่ คุณสามารถใช้แพ็คเกจพิเศษของ SUN: แพ็คเกจ sun.net.smtp สคริปต์ต่อไปนี้ใช้คลาส SmtpClient เพื่อส่งอีเมล
< %@ หน้า import="sun.net.smtp.SmtpClient, java.io.*" % >
<%
สตริง from=" <A href=" mailto:[email protected]">[email protected]</A >";
สตริงไปที่=" <A href=" mailto:[email protected]">[email protected]</A >, <A href=" mailto:[email protected]">[email protected]. cn</A> ";
พยายาม{
ไคลเอนต์ SmtpClient = SmtpClient ใหม่ ("mail.xxxxx.xxx");
ลูกค้า.จาก(จาก);
ลูกค้า.to(ถึง);
ข้อความ PrintStream = client.startMessage();
message.println("ถึง: " + ถึง);
message.println("เรื่อง: กำลังส่งอีเมลจาก JSP!");
message.println("ข้อความนี้ส่งมาจากเพจ JSP!");
ข้อความ println();
message.println("เจ๋ง! :-)");
ข้อความ println();
message.println("เด็กดี");
message.println("ฉันอยู่ใน genius.com");
ข้อความ println();
ลูกค้า.closeServer();
-
จับ (IOException e){
System.out.println("ข้อผิดพลาดในการส่งอีเมล:"+e);
-
% > </P>
14. ฉันสามารถเรียกหน้าข้อผิดพลาด JSP ใน SERVLET ได้หรือไม่ แน่นอนว่าไม่มีปัญหาต่อไปนี้
โมฆะที่ได้รับการป้องกัน sendErrorRedirect (คำขอ HttpServletRequest,
การตอบสนอง HttpServletResponse, สตริง errorPageURL,
โยนได้ e)
พ่น ServletException, IOException {
request.setAttribute ("javax.servlet.jsp.jspException", อี);
getServletConfig().getServletContext()
getRequestDispatcher (errorPageURL) ส่งต่อ (คำขอ
การตอบสนอง);
} </P>
doPost โมฆะสาธารณะ (คำขอ HttpServletRequest, การตอบกลับ HttpServletResponse) {
พยายาม {
//ทำอะไรสักอย่าง
} จับ (ข้อยกเว้นเช่น) {
พยายาม {
sendErrorRedirect(คำขอ,ตอบกลับ,"/jsp/MyErrorPage.jsp",ex);
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
-
-
} </P>
15. JSP และ APPLET สื่อสารกันอย่างไร?
JSP สื่อสารกับ EJB SessionBean อย่างไร ข้อมูลโค้ดต่อไปนี้เป็นการสาธิตที่ดี
< %@ หน้า import="javax.naming.*, javax.rmi.PortableRemoteObject,
foo.AccountHome, foo.Account" % >
<%!
//กำหนดการอ้างอิงทั่วโลกไปยังอินสแตนซ์อินเทอร์เฟซ SessionBeanHome
AccountHome accHome=null; </P>
โมฆะสาธารณะ jspInit() {
// รับอินสแตนซ์อินเทอร์เฟซที่บ้าน
InitialContext cntxt = InitialContext ใหม่ ( );
วัตถุ ref= cntxt.lookup("java:comp/env/ejb/AccountEJB");
accHome = (AccountHome)PortableRemoteObject.narrow(อ้างอิง,AccountHome.class);
-
%>
<%
//สร้างอินสแตนซ์ SessionBean
บัญชีบัญชี = accHome.create();
//เรียกวิธีการระยะไกล
acct.doWhatever(...);
//และอื่นๆ
% > </P>
16. ฉันจะป้องกันไม่ให้ฟิลด์ที่มีฟิลด์ "null" แสดงในฟิลด์ข้อความอินพุต HTML ของฉันได้อย่างไร เมื่อฉันใช้ชุดผลลัพธ์
ฟังก์ชั่นอย่างง่ายสามารถกำหนดเพื่อให้บรรลุวัตถุประสงค์ได้ดังนี้:
<%!
สตริงว่างว่าง (สตริง s) {
กลับ (s == null) ? "" : s;
-
% > </P>
จากนั้นใน JSP FORM คุณสามารถใช้แบบนี้ได้
< ประเภทอินพุต = "text" name = "shoesize" value = "< %=blanknull(shoesize)% >" > </P>
17. จะดาวน์โหลดไฟล์ (เช่น: ไบนารี, ข้อความ, ปฏิบัติการ) ใน SERVLET หรือ JSP ได้อย่างไร?
ขณะนี้มีโซลูชันให้เลือกสองรายการ:
ตอบ: ใช้ HTTP
B: ใน Servlet สามารถทำได้โดยการตั้งค่า ContentType และใช้ Stream และคลาสอื่นๆ ของแพ็คเกจ java.io ตัวอย่างเช่น:
response.setContentType("application/x-msword");
จากนั้นเพียงเขียนบางอย่างลงในบัฟเฟอร์เอาต์พุต </ป>
18. จะยอมรับพารามิเตอร์การกำหนดค่าเริ่มต้นเมื่อกำหนดค่าเริ่มต้น BEAN โดยใช้แฟล็ก useBean ได้อย่างไร เพียงใช้สองแท็กต่อไปนี้:
< jsp:getProperty name="wenBean" property="someProperty"/ >
< jsp:setProperty name="wenBean" property="someProperty" value="somevalue"/ > </P>
19. จะรับข้อมูลเบราว์เซอร์ของลูกค้าโดยใช้ JSP ได้อย่างไร?
เพียงใช้ request.getHeader(String)</P>
20. JSP สามารถเรียกเหมือนรูทีนย่อยได้หรือไม่?
แน่นอนคุณสามารถใช้< jsp:include page="relativeURL" flush="true"/ > </P>
21. หลังจากที่ฉันคอมไพล์คลาสที่ JSP ของฉันใช้ใหม่ ทำไม JVM ยังคงใช้คลาสเก่าของฉันต่อไป </ป>
< <A href=" mailto:%@include">%@include</A > file="abc.jsp"% > และ < jsp:include page="abc.jsp"/ > แตกต่างกันอย่างไร?
แบบแรกคือการรวมแบบคงที่ ในขณะที่แบบหลังคือการรวมแบบไดนามิก</P>
22. ข้อเสียของ JSP?
1. ไม่มีอะไรดีเลยเกี่ยวกับการดีบักโปรแกรม JAVA
2. เนื่องจากเอ็นจิ้นเซิร์ฟเล็ตส่วนใหญ่ไม่รองรับการรวมการเชื่อมต่อ
3. ไม่มีมาตรฐานสำหรับเครื่องยนต์ Servlet
4. ปฏิสัมพันธ์ระหว่าง JSP และภาษาสคริปต์อื่นๆ</P>
23. JSP สามารถโทรซ้ำได้หรือไม่?
แน่นอนคุณสามารถทำได้ หากคุณส่งแบบฟอร์มไปที่หน้านี้</P>
34. จะตระหนักถึงความเป็นสากลของ JSP ได้อย่างไร?
เพียงจัดเตรียมไฟล์คุณสมบัติบันเดิลทรัพยากรสำหรับเวอร์ชันต่างๆ</P>
25. จะเขียนไฟล์ข้อความใน JSP ได้อย่างไร?
ใช้วัตถุ PrintWriter เช่น:
< %@ หน้า import="java.io.*" % >
<%
String str = "พิมพ์ให้ฉัน";
สตริง nameOfTextFile = "/usr/anil/imp.txt";
พยายาม {
PrintWriter pw = PrintWriter ใหม่ (FileOutputStream ใหม่ (nameOfTextFile));
pw.println(str);
pw.ปิด();
} จับ (IOException จ) {
out.println(e.getMessage());
-
% > </P>
26. จะรวมไฟล์พาธสัมบูรณ์ใน JSP ได้อย่างไร?
เพียงใช้ URLConnection </ป>
27. อ็อบเจ็กต์เซสชันสามารถแชร์ระหว่างเซิร์ฟเล็ตและ JSP ได้หรือไม่
แน่นอน,
เซสชัน HttpSession = request.getSession (จริง);
session.putvalue("ตัวแปร", "ค่า"); </P>
28. สามารถคัดลอกตัวแปร Javascript ไปยัง JSP SESSION ได้หรือไม่? </ป>
29. จะตั้งค่าคุกกี้ให้หมดอายุหลังจากช่วงระยะเวลาหนึ่งได้อย่างไร?
ใช้ Cookie.setMaxAge(int) </P>
30. จะรับจำนวนเซสชันปัจจุบันได้อย่างไร?
คุณสามารถใช้ HttpSessionBindingListeners เพื่อติดตาม</P>
31. ฉันสามารถตั้งค่าโค้ดให้ทำงานกับไฟล์ JSP ทั้งหมดของฉันได้หรือไม่? ถ้ามีสามารถแชร์ได้หรือไม่?
แน่นอน คุณสามารถกำหนดนามแฝงสำหรับไฟล์ JSP ของคุณได้: /jsp/=ybwen.genius.myPreprocessingServlet และไฟล์ที่ขึ้นต้นด้วย /jsp/ สามารถใช้ได้</P>
32. สำหรับเพจ JSP หากไคลเอนต์หลายตัวร้องขอพร้อมกัน จะทำการซิงโครไนซ์ได้หรือไม่?
การใช้ beanName ในไวยากรณ์ jsp:useBean มีประโยชน์อย่างไร
beanName ใช้ Beans.instantiate() เพื่อเริ่มต้น Bean </P>
33. เมื่อฉันใช้ < jsp:forward > แถบที่อยู่ของเบราว์เซอร์ไม่เปลี่ยนแปลง?
ใช้ response.sendRedirect("newURL") </P>
34. จะแปลงไฟล์เวอร์ชัน JSP 0.9 เป็น JSP1.1 ได้อย่างไร
เพียงใช้ sed/awk</P>
35. คุณสามารถใช้ JSP เพื่อกำหนดโฟกัสของฟิลด์อินพุตในรูปแบบ HTML โดยไม่ใช้ Javascript ได้หรือไม่?
ไม่มีทาง</P>
36. วิธีที่ดีที่สุดในการเชื่อมต่อบัฟเฟอร์พูลการเชื่อมต่อฐานข้อมูลโดยใช้ JSP คืออะไร?
1. ใช้ไดรเวอร์กับบริการนี้ใน JDBC2.0
2. ใช้ Application server ที่ให้บริการนี้