亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Servlet基礎

2019-11-10 18:51:07
字體:
來源:轉載
供稿:網友
1、什么是Servlet2、Tomcat容器等級3、手工編寫第一個Servlet4、使用MyEclipse編寫Servlet5、Servlet生命周期6、Servlet獲取九大內置對象7、Servlet與表單8、Servlet路勁跳轉

9、階段項目

一、什么是Servlet?        jsp的前身就是Servlet        Servlet是在服務器上運行的小程序。一個Servlet就是一個java類,并且可以通過“請求-響應”編程模型來訪問這個駐留在服務器內存里的Servlet程序。二、Tomcat容器等級      Tomcat的容器分為四個等級,Servlet的容器管理Context容器,一個Context對應一個Web工程。        Engine:引擎容器        HOST:主機容器

        三、手工編寫第一個Servlet    步驟:1、繼承HttpServlet2、重寫doGet()或者doPost()方法3、在web.xml中注冊Servlet    在eclipse中重寫doGet()和doPost()方法:單擊右鍵——Source——Override/Implement Methods...    @override注解:表示重寫從父類繼承過來的方法四、使用MyEclipse編寫Servlet    步驟:1、src——new——Servlet2、重寫doGet()或者doPost()3、部署運行    localhost是服務器主機名,也可以是IP地址127.0.0.1;    8080是tomcat服務器的端口號;五、Servlet生命周期    servlet執行的流程:        Get方式請求HelloServlet——<a href="servlet/HelloServlet">

    Servlet生命周期:

1、初始化階段,調用init()方法2、響應客戶端的的請求階段,調用service()方法。有service()方法根據提交方式選擇執行doGet()或者doPost()方法3、終止階段,調用destroy()方法    servlet生命周期階段包括初始化、加載、實例化、服務和銷毀。    編寫Servlet的doPost方法時,需要拋出ServletExcpetion和IOException異常    在下列時刻Servlet容器裝載Servlet:        (1)Servlet容器啟動時自動裝載某些Servlet,實現它只需要在web.xml文件中<Servlet></Servlet>之間添加如下代碼:

                    <loadon-startup>1</loadon-startup>數字越小表示優先級別越高。        (2)在Servlet容器啟動后,客戶端首次向Servlet發送請求。        (3)Servlet類文件被更新后,重新裝載Servlet。        (4)Servlet被裝載后,Servlet容器創建一個Servlet實例并且調用Servlet的init()方法進行初始化。在Servlet的整個生命周期內,init()方法只被調用一次。六、Servlet獲取九大內置對象

JSP對象怎樣獲取
outresp.getWriter
requestservice方法中的req參數
responseservice方法中的resp參數
sessionreq.getSession()函數
applicationgetServletContext()函數
exceptionThrowable
pagethis
pageContextPageContext
ConfiggetServletConfig函數
七、Servlet與表單

reg.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'reg.jsp' starting page</title>    	<meta http-equiv="PRagma" content="no-cache">	<meta http-equiv="cache-control" content="no-cache">	<meta http-equiv="expires" content="0">    	<meta http-equiv="keyWords" content="keyword1,keyword2,keyword3">	<meta http-equiv="description" content="This is my page">	<!--	<link rel="stylesheet" type="text/CSS" href="styles.css">	-->    <style type="text/css">	 .label{		  width: 20%		 }	 .controler{		  width: 80%		 }   </style>     <script type="text/Javascript" src="js/Calendar3.js"></script>  </head>    <body>    <h1>用戶注冊</h1>    <hr>    <form name="regForm" action="servlet/RegServlet" method="post" >			  <table border="0" width="800" cellspacing="0" cellpadding="0">			    <tr>			    	<td class="lalel">用戶名:</td>			    	<td class="controler"><input type="text" name="username" /></td>			    </tr>			    <tr>			    	<td class="label">密碼:</td>			    	<td class="controler"><input type="password" name="mypassword" ></td>			    				    </tr>			    <tr>			    	<td class="label">確認密碼:</td>			    	<td class="controler"><input type="password" name="confirmpass" ></td>			    				    </tr>			    <tr>			    	<td class="label">電子郵箱:</td>			    	<td class="controler"><input type="text" name="email" ></td>			    				    </tr>			    <tr>			    	<td class="label">性別:</td>			    	<td class="controler"><input type="radio" name="gender" checked="checked" value="Male">男<input type="radio" name="gender" value="Female">女</td>			    				    </tr>			   			    <tr>			    	<td class="label">出生日期:</td>			    	<td class="controler">			    	  <input name="birthday" type="text" id="control_date" size="10"                      maxlength="10" onclick="new Calendar().show(this);" readonly="readonly" />			    	</td>			    </tr>			    <tr>			    	<td class="label">愛好:</td>			    	<td class="controler">			    	<input type="checkbox" name="favorite" value="nba"> NBA  			    	  <input type="checkbox" name="favorite" value="music"> 音樂  			    	  <input type="checkbox" name="favorite" value="movie"> 電影  			    	  <input type="checkbox" name="favorite" value="internet"> 上網  			    	</td>			    </tr>			    <tr>			    	<td class="label">自我介紹:</td>			    	<td class="controler">			    		<textarea name="introduce" rows="10" cols="40"></textarea>			    	</td>			    </tr>			    <tr>			    	<td class="label">接受協議:</td>			    	<td class="controler">			    		<input type="checkbox" name="flag" value="true">是否接受霸王條款			    	</td>			    </tr>			    <tr>			    	<td colspan="2" align="center">			    		<input type="submit" value="注冊"/>  			    	    <input type="reset" value="取消"/>  			    	</td>			    </tr>			  </table>			</form>  </body></html>

userinfo.jsp

<%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'userinfo.jsp' starting page</title>    	<meta http-equiv="pragma" content="no-cache">	<meta http-equiv="cache-control" content="no-cache">	<meta http-equiv="expires" content="0">    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">	<meta http-equiv="description" content="This is my page">	<!--	<link rel="stylesheet" type="text/css" href="styles.css">	-->    <style type="text/css">	 .title{		 width: 30%;			 background-color: #CCC;		 font-weight: bold;	 }	 .content{	     width:70%;	     background-color: #CBCFE5;	 }	    </style>    </head>    <body>    <h1>用戶信息</h1>    <hr>    <center>     <jsp:useBean  id="regUser" class="entity.Users" scope="session"/>        <table width="600" cellpadding="0" cellspacing="0" border="1">        <tr>          <td class="title">用戶名:</td>          <td class="content"> <jsp:getProperty name="regUser" property="username"/></td>        </tr>        <tr>          <td class="title">密碼:</td>          <td class="content"> <jsp:getProperty name="regUser" property="mypassword"/></td>        </tr>        <tr>          <td class="title">性別:</td>          <td class="content"> <jsp:getProperty name="regUser" property="gender"/></td>        </tr>        <tr>          <td class="title">E-mail:</td>          <td class="content"> <jsp:getProperty name="regUser" property="email"/></td>        </tr>        <tr>          <td class="title">出生日期:</td>          <td class="content">             <%                SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");               String date = sdf.format(regUser.getBirthday());                           %>             <%=date%>          </td>        </tr>        <tr>          <td class="title">愛好:</td>          <td class="content">             <%                String[] favorites = regUser.getFavorites();               for(String f:favorites)               {            %>                <%=f%>               <%                }            %>          </td>        </tr>        <tr>          <td class="title">自我介紹:</td>          <td class="content"> <jsp:getProperty name="regUser" property="introduce"/></td>        </tr>        <tr>          <td class="title">是否介紹協議:</td>          <td class="content"> <jsp:getProperty name="regUser" property="flag"/></td>        </tr>     </table>    </center>  </body></html>

Calendar3.js

/////////////////////////調用實例//        <div>//                <span>交易查詢:</span> <span>從//                    <input name="control_date" type="text" id="control_date" size="10"//                        maxlength="10" onclick="new Calendar().show(this);" readonly="readonly" />//                    <input type="button" name="button" id="button" value="button" onclick="new Calendar().show(this.form.control_date);" /></span>//                <span>至//                    <input name="control_date2" type="text" id="control_date2" size="10"//                        maxlength="10" onclick="new Calendar().show(this);" readonly="readonly" />//                    <input type="button" name="button" id="button1" value="button" onclick="new Calendar().show(this.form.control_date2);" /></span>//        </div>//<!--/** * Calendar * @param   beginYear           1990 * @param   endYear             2010 * @param   language            0(zh_cn)|1(en_us)|2(en_en)|3(zh_tw) * @param   patternDelimiter    "-" * @param   date2StringPattern  "yyyy-MM-dd" * @param   string2DatePattern  "ymd" * @version 1.0 build 2006-04-01 * @version 1.1 build 2006-12-17 * @author  KimSoft (jinqinghua [at] Gmail.com) * NOTE!    you can use it free, but keep the copyright please * IMPORTANT:you must include this script file inner html body elment  */function Calendar(beginYear, endYear, language, patternDelimiter, date2StringPattern, string2DatePattern) {	this.beginYear = beginYear || 1990;	this.endYear   = endYear   || 2020;	this.language  = language  || 0;	this.patternDelimiter = patternDelimiter     || "-";	this.date2StringPattern = date2StringPattern || Calendar.language["date2StringPattern"][this.language].replace(//-/g, this.patternDelimiter);	this.string2DatePattern = string2DatePattern || Calendar.language["string2DatePattern"][this.language];		this.dateControl = null;	this.panel  = this.getElementById("__calendarPanel");	this.iframe = window.frames["__calendarIframe"];	this.form   = null;		this.date = new Date();	this.year = this.date.getFullYear();	this.month = this.date.getMonth();		this.colors = {"bg_cur_day":"#00CC33","bg_over":"#EFEFEF","bg_out":"#FFCC00"}};Calendar.language = {	"year"   : ["/u5e74", "", "", "/u5e74"],	"months" : [				["/u4e00/u6708","/u4e8c/u6708","/u4e09/u6708","/u56db/u6708","/u4e94/u6708","/u516d/u6708","/u4e03/u6708","/u516b/u6708","/u4e5d/u6708","/u5341/u6708","/u5341/u4e00/u6708","/u5341/u4e8c/u6708"],				["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"],				["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"],				["/u4e00/u6708","/u4e8c/u6708","/u4e09/u6708","/u56db/u6708","/u4e94/u6708","/u516d/u6708","/u4e03/u6708","/u516b/u6708","/u4e5d/u6708","/u5341/u6708","/u5341/u4e00/u6708","/u5341/u4e8c/u6708"]				],	"weeks"  : [["/u65e5","/u4e00","/u4e8c","/u4e09","/u56db","/u4e94","/u516d"],				["Sun","Mon","Tur","Wed","Thu","Fri","Sat"],				["Sun","Mon","Tur","Wed","Thu","Fri","Sat"],				["/u65e5","/u4e00","/u4e8c","/u4e09","/u56db","/u4e94","/u516d"]		],	"clear"  : ["/u6e05/u7a7a", "Clear", "Clear", "/u6e05/u7a7a"],	"today"  : ["/u4eca/u5929", "Today", "Today", "/u4eca/u5929"],	"close"  : ["/u5173/u95ed", "Close", "Close", "/u95dc/u9589"],	"date2StringPattern" : ["yyyy-MM-dd", "yyyy-MM-dd", "yyyy-MM-dd", "yyyy-MM-dd"],	"string2DatePattern" : ["ymd","ymd", "ymd", "ymd"]};Calendar.prototype.draw = function() {	calendar = this;		var _cs = [];	_cs[_cs.length] = '<form id="__calendarForm" name="__calendarForm" method="post">';	_cs[_cs.length] = '<table id="__calendarTable" width="100%" border="0" cellpadding="3" cellspacing="1" align="center">';	_cs[_cs.length] = ' <tr>';	_cs[_cs.length] = '  <th><input class="l" name="goPrevMonthButton" type="button" id="goPrevMonthButton" value="<" //><//th>';	_cs[_cs.length] = '  <th colspan="5"><select class="year" name="yearSelect" id="yearSelect"><//select><select class="month" name="monthSelect" id="monthSelect"><//select><//th>';	_cs[_cs.length] = '  <th><input class="r" name="goNextMonthButton" type="button" id="goNextMonthButton" value=">" //><//th>';	_cs[_cs.length] = ' <//tr>';	_cs[_cs.length] = ' <tr>';	for(var i = 0; i < 7; i++) {		_cs[_cs.length] = '<th class="theader">';		_cs[_cs.length] = Calendar.language["weeks"][this.language][i];		_cs[_cs.length] = '<//th>';		}	_cs[_cs.length] = '<//tr>';	for(var i = 0; i < 6; i++){		_cs[_cs.length] = '<tr align="center">';		for(var j = 0; j < 7; j++) {			switch (j) {				case 0: _cs[_cs.length] = '<td class="sun"> <//td>'; break;				case 6: _cs[_cs.length] = '<td class="sat"> <//td>'; break;				default:_cs[_cs.length] = '<td class="normal"> <//td>'; break;			}		}		_cs[_cs.length] = '<//tr>';	}	_cs[_cs.length] = ' <tr>';	_cs[_cs.length] = '  <th colspan="2"><input type="button" class="b" name="clearButton" id="clearButton" //><//th>';	_cs[_cs.length] = '  <th colspan="3"><input type="button" class="b" name="selectTodayButton" id="selectTodayButton" //><//th>';	_cs[_cs.length] = '  <th colspan="2"><input type="button" class="b" name="closeButton" id="closeButton" //><//th>';	_cs[_cs.length] = ' <//tr>';	_cs[_cs.length] = '<//table>';	_cs[_cs.length] = '<//form>';		this.iframe.document.body.innerHTML = _cs.join("");	this.form = this.iframe.document.forms["__calendarForm"];	this.form.clearButton.value = Calendar.language["clear"][this.language];	this.form.selectTodayButton.value = Calendar.language["today"][this.language];	this.form.closeButton.value = Calendar.language["close"][this.language];		this.form.goPrevMonthButton.onclick = function () {calendar.goPrevMonth(this);}	this.form.goNextMonthButton.onclick = function () {calendar.goNextMonth(this);}	this.form.yearSelect.onchange = function () {calendar.update(this);}	this.form.monthSelect.onchange = function () {calendar.update(this);}		this.form.clearButton.onclick = function () {calendar.dateControl.value = "";calendar.hide();}	this.form.closeButton.onclick = function () {calendar.hide();}	this.form.selectTodayButton.onclick = function () {		var today = new Date();		calendar.date = today;		calendar.year = today.getFullYear();		calendar.month = today.getMonth();		calendar.dateControl.value = today.format(calendar.date2StringPattern);		calendar.hide();	}};Calendar.prototype.bindYear = function() {	var ys = this.form.yearSelect;	ys.length = 0;	for (var i = this.beginYear; i <= this.endYear; i++){		ys.options[ys.length] = new Option(i + Calendar.language["year"][this.language], i);	}};Calendar.prototype.bindMonth = function() {	var ms = this.form.monthSelect;	ms.length = 0;	for (var i = 0; i < 12; i++){		ms.options[ms.length] = new Option(Calendar.language["months"][this.language][i], i);	}};Calendar.prototype.goPrevMonth = function(e){	if (this.year == this.beginYear && this.month == 0){return;}	this.month--;	if (this.month == -1) {		this.year--;		this.month = 11;	}	this.date = new Date(this.year, this.month, 1);	this.changeSelect();	this.bindData();};Calendar.prototype.goNextMonth = function(e){	if (this.year == this.endYear && this.month == 11){return;}	this.month++;	if (this.month == 12) {		this.year++;		this.month = 0;	}	this.date = new Date(this.year, this.month, 1);	this.changeSelect();	this.bindData();};Calendar.prototype.changeSelect = function() {	var ys = this.form.yearSelect;	var ms = this.form.monthSelect;	for (var i= 0; i < ys.length; i++){		if (ys.options[i].value == this.date.getFullYear()){			ys[i].selected = true;			break;		}	}	for (var i= 0; i < ms.length; i++){		if (ms.options[i].value == this.date.getMonth()){			ms[i].selected = true;			break;		}	}};Calendar.prototype.update = function (e){	this.year  = e.form.yearSelect.options[e.form.yearSelect.selectedIndex].value;	this.month = e.form.monthSelect.options[e.form.monthSelect.selectedIndex].value;	this.date = new Date(this.year, this.month, 1);	this.changeSelect();	this.bindData();};Calendar.prototype.bindData = function () {	var calendar = this;	var dateArray = this.getMonthViewDateArray(this.date.getFullYear(), this.date.getMonth());	var tds = this.getElementsByTagName("td", this.getElementById("__calendarTable", this.iframe.document));	for(var i = 0; i < tds.length; i++) {  		tds[i].style.backgroundColor = calendar.colors["bg_over"];		tds[i].onclick = null;		tds[i].onmouSEOver = null;		tds[i].onmouseout = null;		tds[i].innerHTML = dateArray[i] || " ";		if (i > dateArray.length - 1) continue;		if (dateArray[i]){			tds[i].onclick = function () {				if (calendar.dateControl){					calendar.dateControl.value = new Date(calendar.date.getFullYear(),														calendar.date.getMonth(),														this.innerHTML).format(calendar.date2StringPattern);				}				calendar.hide();			}			tds[i].onmouseover = function () {this.style.backgroundColor = calendar.colors["bg_out"];}			tds[i].onmouseout  = function () {this.style.backgroundColor = calendar.colors["bg_over"];}			var today = new Date();			if (today.getFullYear() == calendar.date.getFullYear()) {				if (today.getMonth() == calendar.date.getMonth()) {					if (today.getDate() == dateArray[i]) {						tds[i].style.backgroundColor = calendar.colors["bg_cur_day"];						tds[i].onmouseover = function () {this.style.backgroundColor = calendar.colors["bg_out"];}						tds[i].onmouseout  = function () {this.style.backgroundColor = calendar.colors["bg_cur_day"];}					}				}			}		}//end if	}//end for};Calendar.prototype.getMonthViewDateArray = function (y, m) {	var dateArray = new Array(42);	var dayOfFirstDate = new Date(y, m, 1).getDay();	var dateCountOfMonth = new Date(y, m + 1, 0).getDate();	for (var i = 0; i < dateCountOfMonth; i++) {		dateArray[i + dayOfFirstDate] = i + 1;	}	return dateArray;};Calendar.prototype.show = function (dateControl, popuControl) {	if (this.panel.style.visibility == "visible") {		this.panel.style.visibility = "hidden";	}	if (!dateControl){		throw new Error("arguments[0] is necessary!")	}	this.dateControl = dateControl;	popuControl = popuControl || dateControl;	this.draw();	this.bindYear();	this.bindMonth();	if (dateControl.value.length > 0){		this.date  = new Date(dateControl.value.toDate(this.patternDelimiter, this.string2DatePattern));		this.year  = this.date.getFullYear();		this.month = this.date.getMonth();	}	this.changeSelect();	this.bindData();	var xy = this.getAbsPoint(popuControl);	this.panel.style.left = xy.x + "px";	this.panel.style.top = (xy.y + dateControl.offsetHeight) + "px";	this.panel.style.visibility = "visible";};Calendar.prototype.hide = function() {	this.panel.style.visibility = "hidden";};Calendar.prototype.getElementById = function(id, object){	object = object || document;	return document.getElementById ? object.getElementById(id) : document.all(id);};Calendar.prototype.getElementsByTagName = function(tagName, object){	object = object || document;	return document.getElementsByTagName ? object.getElementsByTagName(tagName) : document.all.tags(tagName);};Calendar.prototype.getAbsPoint = function (e){	var x = e.offsetLeft;	var y = e.offsetTop;	while(e = e.offsetParent){		x += e.offsetLeft;		y += e.offsetTop;	}	return {"x": x, "y": y};};/** * @param   d the delimiter * @param   p the pattern of your date * @author  meizz * @author  kimsoft add w+ pattern */Date.prototype.format = function(style) {	var o = {		"M+" : this.getMonth() + 1, //month		"d+" : this.getDate(),      //day		"h+" : this.getHours(),     //hour		"m+" : this.getMinutes(),   //minute		"s+" : this.getSeconds(),   //second		"w+" : "/u65e5/u4e00/u4e8c/u4e09/u56db/u4e94/u516d".charAt(this.getDay()),   //week		"q+" : Math.floor((this.getMonth() + 3) / 3),  //quarter		"S"  : this.getMilliseconds() //millisecond	}	if (/(y+)/.test(style)) {		style = style.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));	}	for(var k in o){		if (new RegExp("("+ k +")").test(style)){			style = style.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));		}	}	return style;};/** * @param d the delimiter * @param p the pattern of your date * @rebuilder kimsoft * @version build 2006.12.15 */String.prototype.toDate = function(delimiter, pattern) {	delimiter = delimiter || "-";	pattern = pattern || "ymd";	var a = this.split(delimiter);	var y = parseInt(a[pattern.indexOf("y")], 10);	//remember to change this next century ;)	if(y.toString().length <= 2) y += 2000;	if(isNaN(y)) y = new Date().getFullYear();	var m = parseInt(a[pattern.indexOf("m")], 10) - 1;	var d = parseInt(a[pattern.indexOf("d")], 10);	if(isNaN(d)) d = 1;	return new Date(y, m, d);};document.writeln('<div id="__calendarPanel" style="position:absolute;visibility:hidden;z-index:9999;background-color:#FFFFFF;border:1px solid #666666;width:200px;height:216px;">');document.writeln('<iframe name="__calendarIframe" id="__calendarIframe" width="100%" height="100%" scrolling="no" frameborder="0" style="margin:0px;"><//iframe>');var __ci = window.frames['__calendarIframe'];__ci.document.writeln('<!DOCTYPE html PUBLIC "-////W3C////DTD XHTML 1.0 Transitional////EN" "http:////www.w3.org//TR//xhtml1//DTD//xhtml1-transitional.dtd">');__ci.document.writeln('<html xmlns="http:////www.w3.org//1999//xhtml">');__ci.document.writeln('<head>');__ci.document.writeln('<meta http-equiv="Content-Type" content="text//html; charset=utf-8" //>');__ci.document.writeln('<title>Web Calendar(UTF-8) Written By KimSoft<//title>');__ci.document.writeln('<style type="text//css">');__ci.document.writeln('<!--');__ci.document.writeln('body {font-size:12px;margin:0px;text-align:center;}');__ci.document.writeln('form {margin:0px;}');__ci.document.writeln('select {font-size:12px;background-color:#EFEFEF;}');__ci.document.writeln('table {border:0px solid #CCCCCC;background-color:#FFFFFF}');__ci.document.writeln('th {font-size:12px;font-weight:normal;background-color:#FFFFFF;}');__ci.document.writeln('th.theader {font-weight:normal;background-color:#666666;color:#FFFFFF;width:24px;}');__ci.document.writeln('select.year {width:64px;}');__ci.document.writeln('select.month {width:60px;}');__ci.document.writeln('td {font-size:12px;text-align:center;}');__ci.document.writeln('td.sat {color:#0000FF;background-color:#EFEFEF;}');__ci.document.writeln('td.sun {color:#FF0000;background-color:#EFEFEF;}');__ci.document.writeln('td.normal {background-color:#EFEFEF;}');__ci.document.writeln('input.l {border: 1px solid #CCCCCC;background-color:#EFEFEF;width:20px;height:20px;}');__ci.document.writeln('input.r {border: 1px solid #CCCCCC;background-color:#EFEFEF;width:20px;height:20px;}');__ci.document.writeln('input.b {border: 1px solid #CCCCCC;background-color:#EFEFEF;width:100%;height:20px;}');__ci.document.writeln('-->');__ci.document.writeln('<//style>');__ci.document.writeln('<//head>');__ci.document.writeln('<body>');__ci.document.writeln('<//body>');__ci.document.writeln('<//html>');__ci.document.close();document.writeln('<//div>');var calendar = new Calendar();//-->

Users.java

package entity;import java.util.Date;//用戶實體類public class Users {	private String username; //用戶名	private String mypassword; //密碼	private String email; //電子郵箱	private String gender; //性別	private Date birthday; //出生日期	private String[] favorites; //愛好	private String introduce; //自我介紹	private boolean flag; //是否接受協議		public Users()	{			}		public String getUsername() {		return username;	}	public void setUsername(String username) {		this.username = username;	}	public String getMypassword() {		return mypassword;	}	public void setMypassword(String mypassword) {		this.mypassword = mypassword;	}	public String getEmail() {		return email;	}	public void setEmail(String email) {		this.email = email;	}	public String getGender() {		return gender;	}	public void setGender(String gender) {		this.gender = gender;	}	public Date getBirthday() {		return birthday;	}	public void setBirthday(Date birthday) {		this.birthday = birthday;	}	public String[] getFavorites() {		return favorites;	}	public void setFavorites(String[] favorites) {		this.favorites = favorites;	}	public String getIntroduce() {		return introduce;	}	public void setIntroduce(String introduce) {		this.introduce = introduce;	}	public boolean isFlag() {		return flag;	}	public void setFlag(boolean flag) {		this.flag = flag;	}					}

RegServlet.java

package servlet;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import entity.Users;public class RegServlet extends HttpServlet {	/**	 * Constructor of the object.	 */	public RegServlet() {		super();	}	/**	 * Destruction of the servlet. <br>	 */	public void destroy() {		super.destroy(); // Just puts "destroy" string in log		// Put your code here	}	/**	 * The doGet method of the servlet. <br>	 *	 * This method is called when a form has its tag value method equals to get.	 * 	 * @param request the request send by the client to the server	 * @param response the response send by the server to the client	 * @throws ServletException if an error occurred	 * @throws IOException if an error occurred	 */	public void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		doPost(request,response);	}	/**	 * The doPost method of the servlet. <br>	 *	 * This method is called when a form has its tag value method equals to post.	 * 	 * @param request the request send by the client to the server	 * @param response the response send by the server to the client	 * @throws ServletException if an error occurred	 * @throws IOException if an error occurred	 */	public void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		request.setCharacterEncoding("utf-8");				Users u = new Users();		String username,mypassword,gender,email,introduce,flag;		Date birthday;		String[] favorites;						SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");		try		{			username = request.getParameter("username");			mypassword = request.getParameter("mypassword");			gender = request.getParameter("gender");			email = request.getParameter("email");			introduce = request.getParameter("introduce");			birthday = sdf.parse(request.getParameter("birthday"));			if(request.getParameterValues("flag")!=null)			{				flag = request.getParameter("flag");			}			else			{				flag = "false";			}			//用來獲取多個復選按鈕的值			favorites = request.getParameterValues("favorite");			u.setUsername(username);			u.setMypassword(mypassword);			u.setGender(gender);			u.setEmail(email);			u.setFavorites(favorites);			u.setIntroduce(introduce);			if(flag.equals("true"))			{				u.setFlag(true);			}			else			{				u.setFlag(false);			}			u.setBirthday(birthday);						//把注冊成功的用戶對象保存在session中			request.getSession().setAttribute("regUser", u);			//跳轉帶注冊成功頁面			request.getRequestDispatcher("../userinfo.jsp").forward(request,response);		}		catch(Exception ex)		{			ex.printStackTrace();		}					}	/**	 * Initialization of the servlet. <br>	 *	 * @throws ServletException if an error occurs	 */	public void init() throws ServletException {		// Put your code here	}}

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" 	xmlns="http://java.sun.com/xml/ns/javaee" 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <display-name></display-name>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>RegServlet</servlet-name>    <servlet-class>servlet.RegServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>RegServlet</servlet-name>    <url-pattern>/servlet/RegServlet</url-pattern>  </servlet-mapping>	  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>八、Servlet路勁跳轉    絕對路勁:放之四海而皆準的路勁    相對路徑:相對于當前資源的路徑

index.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</title>	<meta http-equiv="pragma" content="no-cache">	<meta http-equiv="cache-control" content="no-cache">	<meta http-equiv="expires" content="0">    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">	<meta http-equiv="description" content="This is my page">	<!--	<link rel="stylesheet" type="text/css" href="styles.css">	-->  </head>    <body>    <h1>Servlet路徑跳轉</h1>    <hr>    <!--使用相對路徑訪問HelloServlet -->    <!-- /servlet/HelloServlet 第一個/表示服務器的根目錄 -->    <a href="servlet/HelloServlet">訪問HelloServlet!</a><br>    <!-- 使用絕對路徑 訪問HelloServlet,可以使用path變量:path變量表示項目的根目錄-->    <a href="<%=path%>/servlet/HelloServlet">訪問HelloServlet!</a><br>    <!--表單中action的URL地址寫法,與超鏈接方式完全相同。 -->    <a href="servlet/TestServlet">訪問TestServlet,跳轉到Test.jsp</a>       </body></html>

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" 	xmlns="http://java.sun.com/xml/ns/javaee" 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <display-name></display-name>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>HelloServlet</servlet-name>    <servlet-class>servlet.HelloServlet</servlet-class>  </servlet>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>TestServlet</servlet-name>    <servlet-class>servlet.TestServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>HelloServlet</servlet-name>    <!--url-pattern處必須以/開頭,這里的/表示項目的根目錄  -->    <url-pattern>/servlet/HelloServlet</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>TestServlet</servlet-name>    <url-pattern>/servlet/TestServlet</url-pattern>  </servlet-mapping>	  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>

test.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</title>	<meta http-equiv="pragma" content="no-cache">	<meta http-equiv="cache-control" content="no-cache">	<meta http-equiv="expires" content="0">    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">	<meta http-equiv="description" content="This is my page">	<!--	<link rel="stylesheet" type="text/css" href="styles.css">	-->  </head>    <body>    <h1>Test.jsp</h1>    <hr>  </body></html>

HttpServlet.java

package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HelloServlet extends HttpServlet {	/**	 * Constructor of the object.	 */	public HelloServlet() {		super();	}	/**	 * Destruction of the servlet. <br>	 */	public void destroy() {		super.destroy(); // Just puts "destroy" string in log		// Put your code here	}	/**	 * The doGet method of the servlet. <br>	 *	 * This method is called when a form has its tag value method equals to get.	 * 	 * @param request the request send by the client to the server	 * @param response the response send by the server to the client	 * @throws ServletException if an error occurred	 * @throws IOException if an error occurred	 */	public void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		doPost(request,response);	}	/**	 * The doPost method of the servlet. <br>	 *	 * This method is called when a form has its tag value method equals to post.	 * 	 * @param request the request send by the client to the server	 * @param response the response send by the server to the client	 * @throws ServletException if an error occurred	 * @throws IOException if an error occurred	 */	public void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		response.setContentType("text/html;charset=utf-8");		PrintWriter out = response.getWriter();		out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");		out.println("<HTML>");		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");		out.println("  <BODY>");		out.println("<h1>您好,我是HelloServlet!</h1>");		out.println("  </BODY>");		out.println("</HTML>");		out.flush();		out.close();	}	/**	 * Initialization of the servlet. <br>	 *	 * @throws ServletException if an error occurs	 */	public void init() throws ServletException {		// Put your code here	}}TestServlet.java

package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class TestServlet extends HttpServlet {	/**	 * Constructor of the object.	 */	public TestServlet() {		super();	}	/**	 * Destruction of the servlet. <br>	 */	public void destroy() {		super.destroy(); // Just puts "destroy" string in log		// Put your code here	}	/**	 * The doGet method of the servlet. <br>	 *	 * This method is called when a form has its tag value method equals to get.	 * 	 * @param request the request send by the client to the server	 * @param response the response send by the server to the client	 * @throws ServletException if an error occurred	 * @throws IOException if an error occurred	 */	public void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		doPost(request,response);	}	/**	 * The doPost method of the servlet. <br>	 *	 * This method is called when a form has its tag value method equals to post.	 * 	 * @param request the request send by the client to the server	 * @param response the response send by the server to the client	 * @throws ServletException if an error occurred	 * @throws IOException if an error occurred	 */	public void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		 //請求重定向方式跳轉到test.jsp,當前路徑是ServletPathDirection/servlet/		 //response.sendRedirect("test.jsp");		 //使用request.getContextPath獲得上下文對象	         //response.sendRedirect(request.getContextPath()+"/test.jsp");		         //服務器內部跳轉,這里的斜線表示項目的根目錄		 //request.getRequestDispatcher("/test.jsp").forward(request, response);		 request.getRequestDispatcher("../test.jsp").forward(request, response);	}	/**	 * Initialization of the servlet. <br>	 *	 * @throws ServletException if an error occurs	 */	public void init() throws ServletException {		// Put your code here	}}

九、階段項目      階段案例:使用Servlet實現用戶登錄小例子。      用戶名admin,密碼admin,登錄成功使用服務器內部轉發到login_success.jsp頁面,并且提示登錄成功的用戶名。如果登陸失敗則請求重定向到login_failure.jsp頁面。

login.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%   String path = request.getContextPath();   String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><html>	<head>		<!-- Page title -->		<title>imooc - Login</title>		<!-- End of Page title -->		<!-- Libraries -->		<link type="text/css" href="css/login.css" rel="stylesheet" />			<link type="text/css" href="css/smoothness/jquery-ui-1.7.2.custom.html" rel="stylesheet" />			<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>		<script type="text/javascript" src="js/easyTooltip.js"></script>		<script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script>		<!-- End of Libraries -->		</head>	<body>	<div id="container">		<div class="logo">			<a href="#"><img src="assets/logo.png" alt="" /></a>		</div>		<div id="box">			<form action="servlet/LoginServlet" method="post">			<p class="main">				<label>用戶名: </label>				<input name="username" value="" /> 				<label>密碼: </label>				<input type="password" name="password" value="">				</p>			<p class="space">				<input type="submit" value="登錄" class="login" style="cursor: pointer;"/>			</p>			</form>		</div>	</div>	</body></html>login_success.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%   String path = request.getContextPath();   String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><html>	<head>		<!-- Page title -->		<title>imooc - Login</title>		<!-- End of Page title -->		<!-- Libraries -->		<link type="text/css" href="css/login.css" rel="stylesheet" />			<link type="text/css" href="css/smoothness/jquery-ui-1.7.2.custom.html" rel="stylesheet" />			<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>		<script type="text/javascript" src="js/easyTooltip.js"></script>		<script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script>		<!-- End of Libraries -->		</head>	<body>	<div id="container">		<div class="logo">			<a href="#"><img src="assets/logo.png" alt="" /></a>		</div>		<div id="box">		  <% 		     String loginUser = "";		     if(session.getAttribute("loginUser")!=null)		     {		        loginUser = session.getAttribute("loginUser").toString();		     }		  %>		     歡迎您<font color="red"><%=loginUser%></font>,登錄成功!		</div>	</div>	</body></html>login_failure.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%   String path = request.getContextPath();   String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><html>	<head>		<!-- Page title -->		<title>imooc - Login</title>		<!-- End of Page title -->		<!-- Libraries -->		<link type="text/css" href="css/login.css" rel="stylesheet" />			<link type="text/css" href="css/smoothness/jquery-ui-1.7.2.custom.html" rel="stylesheet" />			<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>		<script type="text/javascript" src="js/easyTooltip.js"></script>		<script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script>		<!-- End of Libraries -->		</head>	<body>	<div id="container">		<div class="logo">			<a href="#"><img src="assets/logo.png" alt="" /></a>		</div>		<div id="box">		     登錄失敗!請檢查用戶或者密碼!<br>		  <a href="login.jsp">返回登錄</a>   		</div>	</div>	</body></html>

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" 	xmlns="http://java.sun.com/xml/ns/javaee" 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <display-name></display-name>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>LoginServlet</servlet-name>    <servlet-class>servlet.LoginServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>LoginServlet</servlet-name>    <url-pattern>/servlet/LoginServlet</url-pattern>  </servlet-mapping>	  <welcome-file-list>    <welcome-file>login.jsp</welcome-file>  </welcome-file-list></web-app>

Users.java

package com.po;//用戶類public class Users {	private String username;	private String password;		public Users()	{			}	public String getUsername() {		return username;	}	public void setUsername(String username) {		this.username = username;	}	public String getPassword() {		return password;	}	public void setPassword(String password) {		this.password = password;	}		}LoginServlet.java

package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.po.Users;public class LoginServlet extends HttpServlet {	/**	 * Constructor of the object.	 */	public LoginServlet() {		super();	}	/**	 * Destruction of the servlet. <br>	 */	public void destroy() {		super.destroy(); // Just puts "destroy" string in log		// Put your code here	}	/**	 * The doGet method of the servlet. <br>	 *	 * This method is called when a form has its tag value method equals to get.	 * 	 * @param request the request send by the client to the server	 * @param response the response send by the server to the client	 * @throws ServletException if an error occurred	 * @throws IOException if an error occurred	 */	public void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		doPost(request,response);	}	/**	 * The doPost method of the servlet. <br>	 *	 * This method is called when a form has its tag value method equals to post.	 * 	 * @param request the request send by the client to the server	 * @param response the response send by the server to the client	 * @throws ServletException if an error occurred	 * @throws IOException if an error occurred	 */	public void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		Users u = new Users();		String username = request.getParameter("username");		String password = request.getParameter("password");		u.setUsername(username);		u.setPassword(password);		//判斷用戶名和密碼是否合法		if(u.getUsername().equals("admin")&&u.getPassword().equals("admin"))		{			response.sendRedirect(request.getContextPath()+"/login_success.jsp");		}		else		{			response.sendRedirect(request.getContextPath()+"/login_failure.jsp");		}	}	/**	 * Initialization of the servlet. <br>	 *	 * @throws ServletException if an error occurs	 */	public void init() throws ServletException {		// Put your code here	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区视频在线观看| 国产精品av在线播放| 久久视频国产精品免费视频在线| 国产精品h片在线播放| 亚洲精品mp4| 国产精品老女人视频| 国产精品视频网站| 日本亚洲欧美三级| 国产日韩欧美夫妻视频在线观看| 国产精品9999| xxxxx成人.com| 久久久久久国产精品美女| www.亚洲一二| 午夜精品三级视频福利| 日韩电影免费观看在线观看| 日本成人激情视频| 成人www视频在线观看| 欧美电影免费观看高清| 亚洲人成电影网站色| 亚洲精品一区中文字幕乱码| 国产精品揄拍一区二区| 国产主播在线一区| 97视频免费在线看| 久久免费国产精品1| 欧美夫妻性生活xx| 91麻豆国产精品| 精品久久久久久久久久久久久久| 亚洲男女自偷自拍图片另类| 中日韩美女免费视频网站在线观看| 2019日本中文字幕| 欧美成人午夜激情视频| 精品国偷自产在线| 成人h视频在线| 日日摸夜夜添一区| 日本亚洲精品在线观看| 日韩欧美a级成人黄色| 日本久久久久久| 欧美—级a级欧美特级ar全黄| 国产亚洲精品91在线| 精品亚洲一区二区| 亚洲成人免费在线视频| 日本亚洲欧洲色| 日本亚洲欧洲色α| 亚洲精品v欧美精品v日韩精品| 日韩视频在线观看免费| 中文字幕日韩专区| 日韩电影中文字幕在线| 国产激情999| 日韩欧美在线一区| 欧洲精品在线视频| 18一19gay欧美视频网站| 亚洲男人第一av网站| 国产丝袜一区二区三区免费视频| 欧美大片va欧美在线播放| 日韩视频在线观看免费| 日韩欧美在线免费| 日韩激情av在线免费观看| 日韩大片在线观看视频| 中文字幕欧美专区| 亚洲美女动态图120秒| 亚洲国产天堂久久综合| 久久久www成人免费精品张筱雨| 丝袜亚洲欧美日韩综合| 国产精品福利无圣光在线一区| 久久精品视频在线观看| 亚洲欧美精品suv| 国外成人在线直播| 欧美诱惑福利视频| 伊人久久久久久久久久| 2019亚洲日韩新视频| 国产成人午夜视频网址| 久久伊人免费视频| 精品一区二区三区三区| 欧美美女操人视频| 国产一区二区久久精品| 欧美成人剧情片在线观看| 一区三区二区视频| 日韩最新中文字幕电影免费看| 欧美日韩国产精品一区二区三区四区| 丝袜美腿亚洲一区二区| 欧美在线视频在线播放完整版免费观看| 美日韩丰满少妇在线观看| 国产v综合ⅴ日韩v欧美大片| 黄色一区二区在线观看| 亚洲精品理论电影| 久久久av亚洲男天堂| 亚洲国产欧美一区二区三区久久| 日韩欧美高清在线视频| 91久久中文字幕| 欧美另类暴力丝袜| 国产精品国产自产拍高清av水多| 亚洲免费一级电影| 国产欧美在线播放| 在线日韩av观看| 中文字幕亚洲第一| 欧美一级电影免费在线观看| 欧美日韩一区二区在线| 欧美激情xxxx| 亚洲电影在线看| 成人精品视频久久久久| 久久成人18免费网站| 成人在线播放av| 国产一区欧美二区三区| 国产精品久久色| 成人黄在线观看| 91社影院在线观看| 欧美久久精品一级黑人c片| 欧美日韩在线视频一区二区| 欧美亚洲第一区| 57pao成人永久免费视频| 国产一区二区丝袜高跟鞋图片| 欧美视频免费在线| 在线观看亚洲区| 色婷婷综合成人| 国产专区精品视频| 91中文精品字幕在线视频| 91香蕉嫩草神马影院在线观看| 久久香蕉频线观| 久久理论片午夜琪琪电影网| 亚洲精品在线视频| 深夜福利亚洲导航| 在线视频欧美日韩精品| 久久久久国产视频| 国产精品精品视频一区二区三区| 亚洲精品视频网上网址在线观看| 九色精品美女在线| 丝袜一区二区三区| 久久久久久久久中文字幕| 成人激情视频网| 国产欧美韩国高清| 91精品视频专区| 中文字幕少妇一区二区三区| 热99在线视频| 国产一区二区三区在线观看视频| 成人免费网站在线观看| 久久天天躁夜夜躁狠狠躁2022| 8090理伦午夜在线电影| 欧美激情按摩在线| 在线电影中文日韩| 亚洲精品之草原avav久久| 亚洲精品永久免费| 日韩精品福利在线| 久久久久久久网站| 97香蕉超级碰碰久久免费的优势| 国产精品va在线播放我和闺蜜| 538国产精品一区二区免费视频| 久久91精品国产91久久跳| 亚洲三级黄色在线观看| 亚洲黄在线观看| 日韩精品在线观看一区| 国产伦精品一区二区三区精品视频| 国产亚洲精品久久久| 成人免费淫片视频软件| 国产日韩欧美日韩大片| 国产精品一区二区三区毛片淫片| 亚洲直播在线一区| 国产精品网红福利| 精品日本美女福利在线观看| 91成人福利在线| 性欧美办公室18xxxxhd| 精品久久久久久中文字幕一区奶水| 欧美老肥婆性猛交视频| 日韩av手机在线| 亚洲男人第一av网站|