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对象 | 怎样获取 |
out | resp.getWriter |
request | service方法中的req参数 |
response | service方法中的resp参数 |
session | req.getSession()函数 |
application | getServletContext()函数 |
exception | Throwable |
page | this |
pageContext | PageContext |
Config | getServletConfig函数 |
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.javapackage 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.javapackage 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.javapackage 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.javapackage 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.javapackage 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.javapackage 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 }}
新闻热点
疑难解答