การผ่านพารามิเตอร์หมายถึงการถ่ายโอนพารามิเตอร์ไปยังพื้นหลังของโปรแกรม พื้นหลังอาจทำการประมวลผลบางอย่างจากนั้นบันทึกเนื้อหาลงในฐานข้อมูล
มีหลายวิธีในการผ่านพารามิเตอร์ตามที่อธิบายไปทีละตัว
1. วิธีการพารามิเตอร์โดยตรงในการดำเนินการ
มีไฟล์ index.jsp ต่อไปนี้
การคัดลอกรหัสมีดังนี้: <? xml version = "1.0" encoding = "GB18030"?>?>
<%@ page language = "java" contentType = "ข้อความ/html; charset = gb18030"
pageencoding = "GB18030"%>
-
String Path = request.getContextPath ();
String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/";
-
<! doctype html public "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv = "content-type" content = "text /html; charset = gb18030" />
<base href = "< %= basepath %>"/>
<title> แทรกชื่อเรื่องที่นี่ </title>
</head>
<body>
ใช้แอ็ตทริบิวต์การกระทำเพื่อรับพารามิเตอร์ <a href = "ผู้ใช้/ผู้ใช้! เพิ่ม? name = a & age = 8"> เพิ่มผู้ใช้ </a>
</body>
</html>
สำหรับ <a> </a>, ส่งพารามิเตอร์สองพารามิเตอร์ไปยังโปรแกรมหนึ่งคือชื่อและอื่น ๆ คืออายุ การกำหนดค่าใน struts.xml มีดังนี้:
คัดลอกรหัสรหัสดังนี้: <? xml version = "1.0" encoding = "utf-8"?>?>
<! doctype struts สาธารณะ
"-// Apache Software Foundation // DTD Struts Configuration 2.0 // en"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name = "struts.devmode" value = "true" />>
<package name = "user" extend = "struts-default" namespace = "/user">
<action name = "ผู้ใช้">
<result> /user_add_success.jsp </result>
</action>
</pack>
</struts>
เราจะเขียน useraction ของเราในเวลานี้ได้อย่างไร? ตัวอย่างมีดังนี้:
การคัดลอกรหัสมีดังนี้: แพ็คเกจ com.bjsxt.struts2.user.action;
นำเข้า com.opensymphony.xwork2.actionsupport;
ผู้ใช้ระดับสาธารณะจะขยายการดำเนินการสนับสนุน {
ชื่อสตริงส่วนตัว;
อายุ int ส่วนตัว;
สตริงสาธารณะเพิ่ม () {
System.out.println ("name =" + ชื่อ);
System.out.println ("อายุ =" + อายุ);
กลับมาประสบความสำเร็จ
-
สตริงสาธารณะ getName () {
ชื่อคืน;
-
โมฆะสาธารณะ setName (ชื่อสตริง) {
this.name = ชื่อ;
-
สาธารณะ int getage () {
อายุกลับ;
-
การตั้งค่าโมฆะสาธารณะ (อายุ int) {
this.age = อายุ;
-
-
มันง่ายมากมันกำหนดคุณสมบัติสองประการ หมายเหตุ: ต้องเขียนวิธีการตั้งค่าและรับคุณสมบัติทั้งสองนี้และใช้วิธีการสร้างคราสอย่างรวดเร็วซึ่งง่ายมาก ด้วยวิธีนี้โปรแกรมด้านบนจะพิมพ์ผลลัพธ์ที่ต้องการเมื่อรัน
ชื่อ = a และอายุ = 8
คำอธิบายมีดังนี้: อันดับแรก struts2 จะผ่านพารามิเตอร์โดยอัตโนมัติและเราไม่จำเป็นต้องเข้าร่วมในกระบวนการนี้ ประการที่สองพารามิเตอร์ Pass Struts เพื่อตั้งค่าและรับวิธีการไม่ใช่ชื่อและแอตทริบิวต์อายุ กล่าวคือถ้าเราแก้ไขชื่อในชื่ออื่นเช่นชื่อผู้ใช้ แต่วิธีการยังคงเป็นชื่อและ getName ไม่มีความแตกต่างระหว่างการใช้งานฟังก์ชั่นทั้งหมดมันค่อนข้างน่าอึดอัดใจ ประการที่สามและจุดที่สำคัญที่สุดคือหากมีคุณลักษณะมากมายเราต้องมีชุดและรับวิธีการซึ่งไม่สะดวกมากดังนั้นวิธีการต่อไปนี้จะขยายออกไป
2. การกระทำเพิ่มวิธีการคลาสคลาส
ในเวลานี้คุณสมบัติใน 1 ของเราถูกจัดประเภทเป็นคลาสเช่นผู้ใช้
การคัดลอกรหัสมีดังนี้: แพ็คเกจ com.bjsxt.struts2.user.model;
ผู้ใช้ระดับสาธารณะ {
ชื่อสตริงส่วนตัว;
อายุ int ส่วนตัว;
สตริงสาธารณะ getName () {
ชื่อคืน;
-
โมฆะสาธารณะ setName (ชื่อสตริง) {
this.name = ชื่อ;
-
สาธารณะ int getage () {
อายุกลับ;
-
การตั้งค่าโมฆะสาธารณะ (อายุ int) {
this.age = อายุ;
-
-
สิ่งนี้ทำให้การเขียนในคลาสแอ็คชั่นง่ายขึ้นมาก
การคัดลอกรหัสมีดังนี้: แพ็คเกจ com.bjsxt.struts2.user.action;
นำเข้า com.bjsxt.struts2.user.model.user;
นำเข้า com.opensymphony.xwork2.actionsupport;
ผู้ใช้ระดับสาธารณะจะขยายการดำเนินการสนับสนุน {
ผู้ใช้ส่วนตัว
สตริงสาธารณะเพิ่ม () {
System.out.println ("name =" + user.getName ());
System.out.println ("Age =" + user.getage ());
กลับมาประสบความสำเร็จ
-
ผู้ใช้สาธารณะ getUser () {
ผู้ใช้ส่งคืน;
-
โมฆะสาธารณะ setUser (ผู้ใช้ผู้ใช้) {
this.user = ผู้ใช้;
-
-
หมายเหตุ: ในเวลานี้เราไม่จำเป็นต้องสร้างวัตถุผู้ใช้ด้วยตนเอง กระบวนการนี้จะเสร็จสมบูรณ์โดยอัตโนมัติโดย struts2
และ URL จะต้องมีการแก้ไขในเวลานี้นั่นคือแท็ก <a> </a> ในดัชนีได้รับการแก้ไข:
การคัดลอกรหัสมีดังนี้: <? xml version = "1.0" encoding = "GB18030"?>?>
<%@ page language = "java" contentType = "ข้อความ/html; charset = gb18030"
pageencoding = "GB18030"%>
-
String Path = request.getContextPath ();
String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/";
-
<! doctype html public "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv = "content-type" content = "text /html; charset = gb18030" />
<base href = "< %= basepath %>"/>
<title> แทรกชื่อเรื่องที่นี่ </title>
</head>
<body>
ใช้โมเดลโดเมนเพื่อรับพารามิเตอร์ <a href = "ผู้ใช้/ผู้ใช้! เพิ่ม? user.name = a & user.age = 8"> เพิ่มผู้ใช้ </a>
</body>
</html>
แก้ไขในส่วน 18 บรรทัดข้างต้น
ข้างต้นอธิบายสองวิธีของพารามิเตอร์ struts2 ผ่านวิธีที่สองเรียกว่า: domainmodel, โมเดลโดเมน นั่นคือสร้างคลาสใหม่เพื่อจัดเก็บแอตทริบิวต์
อีกวิธีหนึ่งที่อธิบายไว้ด้านล่างเรียกว่า ModelDriven ซึ่งขับเคลื่อนด้วยแบบจำลอง
มันคล้ายกับวิธีที่สองมากและวิธีอื่น ๆ ก็เหมือนกันยกเว้นว่ามีความแตกต่างระหว่างการกระทำและการเข้าถึง การกระทำของมันมีดังนี้:
การคัดลอกรหัสมีดังนี้: แพ็คเกจ com.bjsxt.struts2.user.action;
นำเข้า com.bjsxt.struts2.user.model.user;
นำเข้า com.opensymphony.xwork2.actionsupport;
นำเข้า com.opensymphony.xwork2.modeldriven;
ผู้ใช้ระดับสาธารณะขยายการดำเนินการ actionsupport ใช้ ModelDriven <user> {
ผู้ใช้ส่วนตัวผู้ใช้ = ผู้ใช้ใหม่ ();
สตริงสาธารณะเพิ่ม () {
System.out.println ("name =" + user.getName ());
System.out.println ("Age =" + user.getage ());
กลับมาประสบความสำเร็จ
-
@Override
ผู้ใช้สาธารณะ getModel () {
ผู้ใช้ส่งคืน;
-
-
เราสามารถเห็นได้จากสิ่งนี้ว่ามันใช้อินเทอร์เฟซ ModelDriven และใช้เทคโนโลยีทั่วไป ด้วยวิธีนี้ struts2 จะไม่ยกตัวอย่างวัตถุโดยอัตโนมัติดังนั้นเราจึงสามารถสร้างมันได้ด้วยตนเอง มันแทนที่วิธีการ getModel () ของอินเตอร์เฟส modeldriven และฟังก์ชั่นของมันคือการส่งคืนวัตถุคลาส
การเข้าถึงของมันแตกต่างจากที่สอง (เช่นในวิธีแรก):
คัดลอกรหัสรหัสดังต่อไปนี้: ใช้ ModelDriven เพื่อรับพารามิเตอร์ <a href = "ผู้ใช้/ผู้ใช้! เพิ่ม? name = a & age = 8"> เพิ่มผู้ใช้ </a>
มันไม่ได้ใช้เมธอดผู้ใช้ชื่อซึ่งเป็นสาเหตุที่จำเป็นสำหรับวัตถุใหม่
กระบวนการทางอุดมการณ์พื้นฐานของวิธีนี้คือ: ประการแรกการดำเนินการวิเคราะห์ URL รับพารามิเตอร์แล้วเข้าสู่การกระทำ พบว่าการกระทำนี้ใช้อินเทอร์เฟซ ModelDriven ในเวลานี้วิธี GetModel ของอินเตอร์เฟส ModelDriven ถูกเรียกให้รับวัตถุคลาสจากนั้นชุดและรับวิธีการของคลาสนี้จะถูกเรียกให้ผ่านพารามิเตอร์ใน
วิธีนี้สะท้อนให้เห็นถึงแนวคิด MVC ของ struts2, m --- model, v --- view, c --- คอนโทรลเลอร์ แต่วิธีนี้ไม่ค่อยใช้และวิธีที่สองที่เราใช้มากที่สุดคือข้างต้น
ข้างต้นคือเนื้อหาทั้งหมดของวิธีการส่งพารามิเตอร์ใน struts2 ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น