Ajax (asynchronousjavascriptandxml) จาวาสคริปต์แบบอะซิงโครนัสและ xml
เป็นการแก้ไขข้อบกพร่องของโมเดล "ส่งคำขอ-รอการตอบสนอง" ในเว็บแอปพลิเคชันแบบเดิมๆ (หลังจากส่งคำขอแล้ว เบราว์เซอร์จะทำได้เพียงรอการตอบสนองของเซิร์ฟเวอร์เท่านั้น ผู้ใช้จะไม่สามารถดำเนินการอื่นๆ ได้ หลังจากที่เบราว์เซอร์ส่ง จะละทิ้งทั้งหน้าและรอให้เซิร์ฟเวอร์ส่งคืนหน้าใหม่ กล่าวอีกนัยหนึ่งคือปริมาณข้อมูลที่โต้ตอบระหว่างเบราว์เซอร์และเซิร์ฟเวอร์มีขนาดใหญ่มากและไม่สามารถรับข้อมูลได้ตามความต้องการ) คือ: ผ่านวัตถุ (XmlHttpRequest) ที่สร้างขึ้นในเบราว์เซอร์ส่งคำขอไปยังเซิร์ฟเวอร์แบบอะซิงโครนัส
สิ่งที่เรียกว่าอะซิงโครนัสหมายความว่าเบราว์เซอร์จะไม่ละทิ้งทั้งหน้า กล่าวคือ จะไม่ส่งข้อมูลไปยังเซิร์ฟเวอร์ผ่านการส่งแบบฟอร์ม หลังจากที่เซิร์ฟเวอร์ประมวลผลคำขอแล้ว จะส่งคืนข้อมูลไปยังวัตถุ XmlHttpRequest และข้อมูล ใน XmlHttpRequest สามารถรับได้ผ่าน javascript จากนั้น ใช้ข้อมูลนี้เพื่ออัปเดตเพจ ในระหว่างกระบวนการทั้งหมด ผู้ใช้ไม่จำเป็นต้องรอการตอบกลับจากเซิร์ฟเวอร์
คำอธิบาย: เทคโนโลยีการส่งข้อมูลแบบอะซิงโครนัสของหน้าเว็บ วิธีการสื่อสารกับเซิร์ฟเวอร์โดยไม่ต้องรีเฟรชทั้งหน้า ในขณะที่รอการส่งหน้าเว็บ ผู้ใช้ยังสามารถโต้ตอบกับระบบได้ และเพจสามารถอัปเดตเนื้อหาได้โดยไม่ต้องรีเฟรช การใช้งานอย่างสมเหตุสมผลทำให้ผู้ใช้รู้สึกดีขึ้นและสะดวกยิ่งขึ้น แต่อย่านำไปใช้ในทางที่ผิด
ซิงโครนัสและอะซิงโครนัส
การซิงโครไนซ์หมายถึงวิธีการสื่อสารที่ผู้ส่งส่งข้อมูลและรอให้ผู้รับส่งการตอบกลับก่อนที่จะส่งแพ็กเก็ตข้อมูลถัดไป
เช่น การซิงโครไนซ์: ส่งคำขอ -> รอการประมวลผลของเซิร์ฟเวอร์ -> ส่งคืนหลังจากประมวลผล ในช่วงเวลานี้ เบราว์เซอร์ไคลเอ็นต์ไม่สามารถดำเนินการใดๆ ได้ หมายถึง: หลังจากที่ผู้ส่งส่งข้อมูลแล้ว จะไม่รอให้ผู้รับส่งกลับ ตอบกลับแล้วส่งวิธีการสื่อสารแพ็คเก็ตข้อมูลถัดไป
เช่น อะซิงโครนัส: คำขอถูกทริกเกอร์โดยเหตุการณ์ -> ประมวลผลโดยเซิร์ฟเวอร์ (เบราว์เซอร์ยังคงสามารถทำสิ่งอื่นได้ในขณะนี้) -> ประมวลผล
อ็อบเจ็กต์สำคัญของ AjaxXMLHttpRequest
วัตถุ Javascript ที่สำคัญ ซึ่งสามารถสร้างคำขอไปยังเซิร์ฟเวอร์ได้ หากจะต้องสร้างคำขอหลายรายการ จำเป็นต้องมีการประมวลผลผลลัพธ์ของคำขอหลายรายการด้วยวิธีการที่กำหนดไว้ล่วงหน้า
วิธีสร้างวัตถุ XmlHttpRequest
ฟังก์ชั่น getXmlHttpRequest(){
var xmlHttpRequest = null;
ถ้า ((ประเภทของ XMLHttpRequest) != 'ไม่ได้กำหนด') {
//เบราว์เซอร์ที่ไม่ใช่ ie
xmlHttpRequest = XMLHttpRequest ใหม่();
}อื่น {
//เช่นเบราว์เซอร์
xmlHttpRequest = ActiveXObject ใหม่ ('Microsoft.XMLHttp');
-
ส่งคืน xmlHttpRequest;
-
หรือ
ฟังก์ชั่น createXmlHttpRequest(){
var xmlHttpRequest = null;
ถ้า (window.ActiveXObject) {
xmlHttpRequest = ใหม่ AvtiveXObject("Microsoft.XMLHTTP");
} อื่นถ้า (window.XMLHttpRequest){
xmlHttpRequest = XMLHttpRequest ใหม่();
-
-
คุณสมบัติที่สำคัญของวัตถุ xmlHttpRequest
responseXml: รับข้อมูล xml ของการตอบกลับของเซิร์ฟเวอร์
สถานะ: รับรหัสสถานะที่เซิร์ฟเวอร์ส่งคืน (เช่น 200)
readyState: รับสถานะการสื่อสารระหว่าง xmlHttpRequest และเซิร์ฟเวอร์ (0, 1, 2, 3, 4 ตามลำดับซึ่งอธิบายสถานะที่แตกต่างกัน)
(ไม่ได้กำหนดค่าเริ่มต้น): วัตถุถูกสร้างขึ้น แต่ยังไม่ได้เตรียมใช้งาน (ยังไม่ได้เรียกใช้วิธีการเปิด)
(การเริ่มต้น): ออบเจ็กต์ถูกสร้างขึ้นและยังไม่ได้เรียกใช้วิธีการส่ง
(ส่งข้อมูล): มีการเรียกวิธีการส่งแล้ว แต่ไม่ทราบสถานะปัจจุบันและส่วนหัว http
(อยู่ระหว่างการส่งข้อมูล): ยอมรับข้อมูลบางส่วนแล้ว
(สิ้นสุดการตอบสนอง): ณ จุดนี้ สามารถรับข้อมูลผ่าน responseText/responseXml
ตัวอย่างแอปพลิเคชันที่ดำเนินการโดยบุคคลที่ใช้ Ajax
ภาพหน้าจอของระบบ
คำอธิบายระบบ:
แผนภาพโครงสร้างระบบ
แสดงหน้าแรก register.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<หัว>
<title>การลงทะเบียนผู้ใช้</title>
<link href="css/regist.css" rel="stylesheet" type="text/css" />
<script src="js/regist_ajax.js" type="text/javascript"></script>
</หัว>
<body onload="getRegistRuleTxt(),getCheckcode()">
<form action="regist.do" onsubmit="return check(this);">
<table bordercolor="gray" cellpadding="6" align="center">
<tr>
<td colspan="2">
>> <font color="red">การลงทะเบียนผู้ใช้</font>
<font color="gray">[คำอธิบายโมดูล: การตรวจสอบชื่อผู้ใช้ เงื่อนไขการให้บริการใช้การประมวลผลแบบอะซิงโครนัส Ajax การสร้างเซิร์ฟเวอร์รหัสยืนยัน]</font>
</td>
</tr>
<tr>
<td align="ขวา">
ชื่อผู้ใช้:
</td>
<td>
<input type="text" name="username" id="username" onblur="postValidate()"/>
<span style="color:orange" id="checkMsg"> * ชื่อผู้ใช้ประกอบด้วยตัวอักษร ตัวเลข และขีดล่าง</span>
</td>
</tr>
<tr>
<td align="ขวา">
รหัสผ่าน:
</td>
<td>
<input type="password" name="password" id="password">
<span style="color:orange" id="pwdMsg"> * รหัสผ่านมีความยาว 6-8 อักขระ เพื่อความปลอดภัย ควรหลีกเลี่ยงรูปแบบที่ไม่ซ้ำกัน</span>
</td>
</tr>
<tr>
<td align="ขวา">
ยืนยันรหัสผ่าน:
</td>
<td>
<input type="password" name="repassword" id="repassword">
<span style="color:orange" id="repwdMsg"> * ยืนยันรหัสผ่านเพื่อให้แน่ใจว่าคุณจะไม่ผิดพลาดในการตั้งรหัสผ่าน</span>
</td>
</tr>
<tr>
<td align="ขวา">
จดหมาย:
</td>
<td>
<input type="text" id="email" name="email">
<span style="color:orange" id="emailMsg"> * ป้อนที่อยู่อีเมลปกติของคุณเพื่อให้เราสามารถติดต่อคุณได้</span>
</td>
</tr>
<tr>
<td align="ขวา">
รหัสยืนยัน:
</td>
<td>
<input type="text" id="checkcode">
<img id="ckcodeimage" src="imgsrc" style="border:solid #92CEDB 1px "> <!-- รหัสยืนยัน-->
<a href="javascript:;" onclick="getCheckcode()">มองเห็นไม่ชัดเจน เปลี่ยนอันอื่น</a>
<span style="color:orange" id="ckcodeMsg"> </span>
</td>
</tr>
<tr>
<td align="ขวา">
ข้อกำหนดในการให้บริการ:
</td>
<td>
<textarea rows="5" cols="48" style="margin-bottom:6px;margin-left:5px; color:gray" readonly="อ่านอย่างเดียว" id="item">
</ข้อความ>
</td>
</tr>
<tr>
<td align="ขวา">
</td>
<td>
<input type="submit" value="ยอมรับข้อกำหนดและลงทะเบียน"/>
</td>
</tr>
</ตาราง>
<div align="center">
ลิขสิทธิ์ (c) 2013 Su Ruonian ( <a href="mailto:[email protected]">ติดต่อเรา:[email protected]</a> )
บริษัท สงวนลิขสิทธิ์.
</div>
</แบบฟอร์ม>
</ร่างกาย>
</html>
-
สร้างวิธีการรับวัตถุxmlHttpRequest
-
ฟังก์ชั่น getXmlHttpRequest(){
var xmlHttpRequest = null;
if((ประเภทของ XMLHttpRequest) != 'ไม่ได้กำหนด'){
/*เบราว์เซอร์ที่ไม่ใช่ IE สร้างวัตถุ XMLHttpRequest*/
xmlHttpRequest = XMLHttpRequest ใหม่();
}อื่น{
/*เบราว์เซอร์ IE สร้างวัตถุ XMLHttpRequest*/
xmlHttpRequest = ActiveXObject ใหม่ ('Microsoft.XMLHttp');
-
ส่งคืน xmlHttpRequest;
-
-
เหตุการณ์ตอบกลับรหัสยืนยัน
-
ฟังก์ชัน getCheckcode(){
var codeimage = document.getElementById("ckcodeimage");
var url = "checkcode.do";
codeimage.src=addTimestamp(url);
-
-
การใช้ Ajax เพื่อรับข้อกำหนดในการให้บริการ
-
ฟังก์ชัน getRegistRuleTxt(){
var item = document.getElementById("รายการ");
var url = "rulesText.do";
//แก้ปัญหาการเข้ารหัสภาษาจีนเมื่อส่งในโหมดรับ ใช้ encodeURI(url).true เพื่อระบุว่าคำขอถูกส่งแบบอะซิงโครนัส และ addTimestamp(url) ป้องกันการแคชของเบราว์เซอร์
xmlHttpRequest.open("โพสต์",encodeURI(url),true);
xmlHttpRequest.setRequestHeader("ประเภทเนื้อหา", "application/x-www-form-urlencoded");
xmlHttpRequest.onreadystatechange=function(){
ถ้า(xmlHttpRequest.readyState == 4){
ถ้า(xmlHttpRequest.status == 200){
var respText = xmlHttpRequest.responseText;
item.value=respText;
}อื่น{
//ระบบผิดพลาด.
item.value="ข้อผิดพลาดของระบบ";
-
}อื่น{
//ตรวจสอบการแสดงผล...
item.value="กำลังโหลด...";
-
-
xmlHttpRequest.send(null);
-
-
ใช้วิธีรับเพื่อตรวจสอบ
-
ฟังก์ชั่น getValidate(){
ชื่อผู้ใช้ var = document.getElementById("ชื่อผู้ใช้");
var url = "validatename.do?username=" + ชื่อผู้ใช้.value;
//แก้ปัญหาการเข้ารหัสภาษาจีนเมื่อส่งในโหมดรับ ใช้ encodeURI(url).true เพื่อระบุว่าคำขอถูกส่งแบบอะซิงโครนัส และ addTimestamp(url) ป้องกันการแคชของเบราว์เซอร์
xmlHttpRequest.open("get",encodeURI(addTimestamp(url)),true);
//เรียกวิธีการตรวจสอบสถานะการคืนสินค้า
xmlHttpRequest.onreadystatechange=โทรกลับ;
xmlHttpRequest.send(null);
-
-
ใช้วิธีการโพสต์เพื่อตรวจสอบ
-
ฟังก์ชั่น postValidate(){
ชื่อผู้ใช้ var = document.getElementById("ชื่อผู้ใช้");
var url = "validatename.do";
//true หมายถึงการใช้วิธีอะซิงโครนัสเพื่อส่งคำขอ ค่าเริ่มต้นคือ true และวิธีการร้องขอสามารถรับ โพสต์ ใส่ ลบได้
xmlHttpRequest.open('post',url,true);
xmlHttpRequest.setRequestHeader("ประเภทเนื้อหา", "application/x-www-form-urlencoded");
xmlHttpRequest.onreadystatechange=โทรกลับ;
//หากมีหลายพารามิเตอร์ ให้ใช้สัญลักษณ์ & เพื่อเชื่อมโยงคู่คีย์-ค่า และใช้ Escape เพื่อแก้ปัญหาภาษาจีน
xmlHttpRequest.send('username=' + Escape(username.value));
-
-
การตรวจสอบวิธีการส่งคืนสถานะ
-
ฟังก์ชั่นโทรกลับ () {
ถ้า(xmlHttpRequest.readyState == 4){
ถ้า(xmlHttpRequest.status == 200){
var respText = xmlHttpRequest.responseText;
innerHtmlMsg(respText);
}อื่น{
//ระบบผิดพลาด.
innerHtmlMsg("ข้อผิดพลาด");
-
}อื่น{
//ตรวจสอบการแสดงผล...
innerHtmlMsg("กำลังตรวจสอบ");
-
-
-
เพิ่มการประทับเวลาเพื่อป้องกันการแคชของเบราว์เซอร์ การแคชของเบราว์เซอร์จะแคชเฉพาะวิธีการรับเท่านั้น
-
ฟังก์ชั่น addTimestamp (url) {
ถ้า(url.indexOf("?")!=-1){
//หากมีพารามิเตอร์
กลับ url+"×tamp=" + วันที่ใหม่ ().valueOf();
}อื่น{
//ไม่มีพารามิเตอร์
กลับ url+"?timestamp=" + วันที่ใหม่().valueOf();
-
-
ฟังก์ชั่น innerHtmlMsg (ข้อความ) {
var checkMsg = document.getElementById("checkMsg");
ถ้า (ข้อความ == 'มีอยู่') {
//มีชื่อผู้ใช้อยู่แล้ว
checkMsg.innerHTML= "<font color='red'>* ขออภัย มีชื่อผู้ใช้นี้แล้ว</font>";
-
ถ้า (ข้อความ == 'ไม่มีอยู่') {
//สามารถใช้ชื่อผู้ใช้ได้
checkMsg.innerHTML= "<font color='green'>* ยินดีด้วย ชื่อผู้ใช้สามารถใช้ได้แล้ว</font>";
-
ถ้า (ข้อความ == 'กำลังตรวจสอบ') {
//การตรวจสอบระบบ
checkMsg.innerHTML= "<font color='#0099aa'>* ระบบกำลังตรวจสอบข้อมูล...</font>";
-
ถ้า (ข้อความ=='ข้อผิดพลาด'){
//ระบบผิดพลาด
checkMsg.innerHTML= "<font color='red'>ระบบล้มเหลว โปรดตรวจสอบเครือข่าย หรือ <a href='#'>ติดต่อเรา</a></font>";
-
-
} /* กำหนดความกว้างและลักษณะเส้นขอบโดยรวมของตาราง และกำหนดลักษณะของข้อความทั้งหมดในตาราง */
.ซ้าย{
ตัวอักษร-น้ำหนัก:500;
สี:#708899;
ช่องว่างภายในขวา: 20px;
สีพื้นหลัง: #D6ECF5;
-
.inpt {
เส้นขอบ:ทึบ #92CEDB 1px;
ความกว้าง: 210px;
ความสูง: 22px;
ขอบซ้าย: 10px;
-
.rghts{
ขอบบน:20px;
สี:#708899;
ขนาดตัวอักษร:12px;
-
<เซิร์ฟเล็ต>
<servlet-name>UserServlet</servlet-name>
<servlet-class>com.webapp.servlet.UserServlet</servlet-class>
<init-พารามิเตอร์>
<param-name>rulesfilepath</param-name>
<param-value>/txt/item.txt</param-value>
</init-พารามิเตอร์>
</เซิร์ฟเล็ต>
<การแมปเซิร์ฟเล็ต>
<servlet-name>UserServlet</servlet-name>
<url-รูปแบบ>*.ทำ</url-รูปแบบ>
</การแมปเซิร์ฟเล็ต>
<ยินดีต้อนรับรายการไฟล์>
<ยินดีต้อนรับ-ไฟล์>regist.jsp</ยินดีต้อนรับ-ไฟล์>
</ยินดีต้อนรับรายการไฟล์>
</เว็บแอป>
นำเข้า java.awt.Color;
นำเข้า java.awt.Font;
นำเข้า java.awt.Graphics;
นำเข้า java.awt.image.BufferedImage;
นำเข้า java.util.HashMap;
นำเข้า java.util.Map;
นำเข้า java.util.สุ่ม;
-
-
* @เวอร์ชัน: 1.1.1
-
* @author: Su Ruonian<a href="mailto:[email protected]">ส่งอีเมล</a>
-
* @since: 1.0 เวลาสร้าง: 20-1-2556 04:26:52 น.
-
* @function: TODO
-
-
CheckCodeImageUtil คลาสสาธารณะ {
ส่วนตัวสตริงสุดท้ายคงที่ [] ตัวอักษร = { "0", "1", "2", "3", "4", "5", "6",
"7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "ฉัน" };
int สุดท้ายคงที่ส่วนตัว SIZE = 4; // จำนวนอักขระในรหัสยืนยัน
int สุดท้ายคงที่ส่วนตัว = 4; // จำนวนสายรบกวน
int สุดท้ายคงที่ส่วนตัว WIDTH = 110; // ความกว้างของรูปภาพรหัสยืนยัน
int HEIGHT สุดท้ายแบบคงที่ส่วนตัว = 40; // ความสูงของรูปภาพรหัสยืนยัน
int สุดท้ายคงที่ส่วนตัว FONT_SIZE = 21; // ขนาดตัวอักษรในรหัสยืนยัน
-
* สร้างรหัสยืนยัน
-
* @return Map<ค่าของรหัสยืนยัน, รูปภาพของรหัสยืนยัน>
-
-
แผนที่แบบคงที่สาธารณะ <String, BufferedImage> creatCheckImage () {
//บันทึกสตริงที่สร้างมูลค่าที่แท้จริงของรหัสยืนยัน
StringBuffer buffer = StringBuffer ใหม่ ();
//วัตถุรูปภาพที่กำหนดเอง
รูปภาพ BufferedImage = BufferedImage ใหม่ (WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
แผนที่ <String, BufferedImage> map = ใหม่ HashMap <String, BufferedImage> ();
กราฟิก กราฟิก = image.getGraphics();
Graphics.setColor(สี.WHITE);
กราฟิก fillRect (0, 0, ความกว้าง, ความสูง);
สุ่ม สุ่ม = สุ่มใหม่();
//วาดตัวอักษรแบบสุ่ม
สำหรับ(int i=0; i<SIZE; i++){
//รับองค์ประกอบจากชุดอักขระที่กำหนด
int rand = Random.nextInt (ตัวอักษรความยาว);
Graphics.setColor(สีสุ่ม());
graphics.setFont(แบบอักษรใหม่(null,Font.BOLD+Font.ITALIC,FONT_SIZE));
graphics.drawString(ตัวอักษร[rand],(i)*WIDTH/SIZE+8, HEIGHT/2+10);
buffer.append(chars[rand]); //บันทึกสตริงที่สร้างขึ้นลงในบัฟเฟอร์และใช้เพื่อเปรียบเทียบกับค่าที่ผู้ใช้ป้อนเมื่อได้รับในอนาคต
-
//วาดเส้นรบกวน
สำหรับ(int i=1;i<=LINES;i++){
Graphics.setColor(สีสุ่ม());
กราฟิก.drawLine(random.nextInt(WIDTH), Random.nextInt(HEIGHT), Random.nextInt(WIDTH),random.nextInt(HEIGHT));
ถ้า(i==สาย){
Graphics.setFont(แบบอักษรใหม่(null,Font.ITALIC,13));
กราฟิกsetColor(สี.สีเทา);
graphics.drawString("สตูดิโอ Ruonian", 5,15);
-
-
map.put(buffer.toString(), รูปภาพ);
แผนที่ขากลับ;
-
-
* สีจะถูกสร้างขึ้นทันที
* @กลับ
-
สีคงที่สาธารณะ RandomColor () {
สุ่ม สุ่ม = สุ่มใหม่();
สี สี = สีใหม่ (random.nextInt (256),random.nextInt(256),random.nextInt(256));
กลับสี;
-
-
นำเข้า java.awt.image.BufferedImage;
นำเข้า java.io.BufferedReader;
นำเข้า java.io.ByteArrayInputStream;
นำเข้า java.io.ByteArrayOutputStream;
นำเข้า java.io.File;
นำเข้า java.io.FileReader;
นำเข้า java.io.FileWriter;
นำเข้า java.io.IOException;
นำเข้า java.io.InputStream;
นำเข้า java.io.PrintWriter;
นำเข้า java.util.List;
นำเข้า java.util.Map;
นำเข้า java.util.Vector;
นำเข้า javax.imageio.ImageIO;
นำเข้า javax.servlet.ServletException;
นำเข้า javax.servlet.ServletOutputStream;
นำเข้า javax.servlet.http.HttpServlet;
นำเข้า javax.servlet.http.HttpServletRequest;
นำเข้า javax.servlet.http.HttpServletResponse;
นำเข้า com.sun.image.codec.jpeg.JPEGCodec;
นำเข้า com.sun.image.codec.jpeg.JPEGImageEncoder;
นำเข้า com.sun.imageio.plugins.common.ImageUtil;
นำเข้า com.webapp.util.CheckCodeImageUtil;
UserServlet คลาสสาธารณะขยาย HttpServlet {
รายการส่วนตัว <สตริง> รายการผู้ใช้;
สตริงส่วนตัว txtFilePath = null;
โมฆะสาธารณะ init() พ่น ServletException {
txtFilePath = this.getInitParameter("rulesfilepath");
//จำลองฐานข้อมูล
userList = เวกเตอร์ใหม่<String>();
userList.add("จางซาน");
userList.add("lisi");
userList.add("wangwu");
userList.add("zhaoliu");
-
โมฆะสาธารณะ doGet (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse)
พ่น ServletException, IOException {
doPost(คำขอ, ตอบกลับ);
-
โมฆะสาธารณะ doPost (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse)
พ่น ServletException, IOException {
สตริง uri = request.getRequestURI();
เส้นทางสตริง = uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf("."));
ถ้า(path.equals("/validatename")){
request.setCharacterEncoding("utf-8");
response.setContentType("ข้อความ/html;charset=utf-8");
พยายาม {
เธรด.สลีป(3000);
} จับ (InterruptedException e) {
e.printStackTrace();
-
//ระบบจำลองสร้างการทดสอบข้อยกเว้น
/*ถ้า(1==2){
โยน ServletException ใหม่ ("ข้อผิดพลาดบางอย่าง");
-
ชื่อผู้ใช้สตริง = request.getParameter("ชื่อผู้ใช้");
System.out.println("ชื่อผู้ใช้:" + ชื่อผู้ใช้);
//จำลองการสืบค้นข้อมูลผู้ใช้
บูลีนมีอยู่ = userList.contains (ชื่อผู้ใช้);
ถ้า (มีอยู่) {
response.getWriter().print("มีอยู่");
}อื่น{
response.getWriter().print("ไม่มีอยู่");
-
-
ถ้า(path.equals("/rulesText")){
request.setCharacterEncoding("utf-8");
response.setContentType("ข้อความ/html;charset=utf-8");
สตริง filePath = this.getServletContext().getRealPath(txtFilePath);
ไฟล์ไฟล์ = ไฟล์ใหม่ (filePath);
StringBuffer buffer = StringBuffer ใหม่ ();
พยายาม {
เครื่องอ่าน BufferedReader = BufferedReader ใหม่ (FileReader ใหม่ (ไฟล์));
สตริง tmp = "";
ในขณะที่((tmp = reader.readLine())!=null){
buffer.append(สตริงใหม่(tmp.getBytes("gbk"),"utf8")).ผนวก("/n");
-
reader.ปิด();
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
-
ถ้า(buffer.toString().trim()!=null){
response.getWriter().พิมพ์(buffer.toString());
-
-
ถ้า (path.equals ("/ รหัสตรวจสอบ")) {
response.setContentType("รูปภาพ/jpeg");
แผนที่ <String, BufferedImage> map = CheckCodeImageUtil.creatCheckImage();
คีย์สตริง = (สตริง)map.keySet().iterator().next();
request.getSession().setAttribute("รหัส",คีย์);
System.out.println("checkcode = " + request.getSession().getAttribute("รหัส"));
รูปภาพ BufferedImage = map.get (คีย์);
ImageIO.write(รูปภาพ, "jpeg", response.getOutputStream());
-
-
-