request.getParameter("companyName"); คือการได้รับข้อมูลที่ส่งโดยแบบฟอร์ม (ชื่อคือ companyName ในแบบฟอร์มหน้าแรก)
request.getAttribute("cc") คือการรับข้อมูลของ setAttribute ของคุณ (ค่าที่ได้รับคือค่าของพารามิเตอร์ cc ที่คุณบันทึกไว้เอง)
ใช้สำหรับพารามิเตอร์ในไฮเปอร์ลิงก์ - request.getParameter (ชื่อพารามิเตอร์)
คลาส HttpServletRequest มีทั้งเมธอด getAttribute() และเมธอด getParameter() ทั้งสองวิธีมีความแตกต่างดังต่อไปนี้:
(1) คลาส HttpServletRequest มีเมธอด setAttribute() แต่ไม่มีเมธอด setParameter()
(2) เมื่อมีความสัมพันธ์ลิงก์ระหว่างสองคอมโพเนนต์ของเว็บ องค์ประกอบที่เชื่อมโยงจะได้รับพารามิเตอร์คำขอผ่านเมธอด getParameter() ตัวอย่างเช่น สมมติว่ามีความสัมพันธ์ลิงก์ระหว่างwelcome.jspและauthenticate.jsp,welcome.jsp มีรหัสดังต่อไปนี้:
<a href="authenticate.jsp?username=weiqin">authenticate.jsp </a>
หรือ:
<ชื่อแบบฟอร์ม = "form1" method = "โพสต์" action = "authenticate.jsp">
กรุณากรอกชื่อผู้ใช้: <input type="text" name="username">
<input type="submit" name="Submit" value="Submit">
</แบบฟอร์ม>
รับชื่อผู้ใช้พารามิเตอร์คำขอผ่านเมธอด request.getParameter("username") ใน Authenticate.jsp:
<% สตริงชื่อผู้ใช้=request.getParameter("ชื่อผู้ใช้"); %>
(3) เมื่อมีความสัมพันธ์การส่งต่อระหว่างคอมโพเนนต์ของเว็บสองคอมโพเนนต์ องค์ประกอบเป้าหมายการส่งต่อจะแชร์ข้อมูลภายในช่วงคำขอกับคอมโพเนนต์แหล่งที่มาของการส่งต่อผ่านเมธอด getAttribute() สันนิษฐานว่ามีความสัมพันธ์การส่งต่อระหว่าง Authenticate.jsp และ hello.jsp Authenticate.jsp หวังที่จะส่งชื่อผู้ใช้ปัจจุบันไปที่ hello.jsp จะส่งข้อมูลนี้ได้อย่างไร ขั้นแรกให้เรียกเมธอด setAttribute() ใน Authenticate.jsp:
-
สตริงชื่อผู้ใช้=request.getParameter("ชื่อผู้ใช้");
request.setAttribute("ชื่อผู้ใช้", ชื่อผู้ใช้);
-
<jsp:หน้าไปข้างหน้า="hello.jsp" />
รับชื่อผู้ใช้ผ่านเมธอด getAttribute() ใน hello.jsp:
<% ชื่อผู้ใช้สตริง=(สตริง)request.getAttribute("ชื่อผู้ใช้"); %>
สวัสดี: <%=ชื่อผู้ใช้ %>
เมื่อพิจารณาในระดับที่ลึกกว่านั้น ข้อมูลที่ส่งผ่านโดยเมธอด request.getParameter() จะถูกส่งผ่านจากเว็บไคลเอ็นต์ไปยังเว็บเซิร์ฟเวอร์ ซึ่งแสดงถึงข้อมูลคำขอ HTTP request.getParameter() วิธีการส่งคืนข้อมูลประเภทสตริง
ข้อมูลที่ส่งผ่านโดยเมธอด request.setAttribute() และ getAttribute() จะมีอยู่ในเว็บคอนเทนเนอร์เท่านั้น และจะถูกแชร์ระหว่างคอมโพเนนต์ของเว็บที่มีความสัมพันธ์ในการส่งต่อ ทั้งสองวิธีนี้สามารถตั้งค่าข้อมูลที่ใช้ร่วมกันประเภท Object ได้
กล่าวง่ายๆ ก็คือ เมธอด request.getParamenter() ใช้โปรโตคอล HTTP เพื่อถ่ายโอนข้อมูลและสามารถถ่ายโอนได้เฉพาะข้อมูลประเภทสตริงเท่านั้น ในขณะที่เมธอด request.setAttribtute() ถ่ายโอนข้อมูลในคอนเทนเนอร์ของเว็บ และสามารถส่งต่อข้อมูลออบเจ็กต์ประเภทใดก็ได้ ตัวอย่างเช่น หากเซิร์ฟเล็ต listAction ต้องการส่งคอลเลกชั่น LIST ไปยัง list.jsp เซิร์ฟเล็ตนั้นจะต้องใช้ setAttribute