📄 servlet-into.htm
字号:
<html><!-- #BeginTemplate "/Templates/more.dwt" -->
<head>
<!-- #BeginEditable "doctitle" -->
<title>csdn_了解Servlet</title>
<!-- #EndEditable -->
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<STYLE type=text/css>
A:link {
COLOR: #000000; FONT-FAMILY:verdana,宋体,新宋体; TEXT-DECORATION: none
}
A:visited {
COLOR: #333399; FONT-FAMILY:verdana,宋体,新宋体; TEXT-DECORATION: none
}
A:active {
COLOR: #ff0000; FONT-FAMILY:verdana,宋体,新宋体; TEXT-DECORATION: none
}
A:hover {
COLOR: black; TEXT-DECORATION: underline
}
BODY {
COLOR: #000000; FONT-SIZE:9pt; LETTER-SPACING: normal; LINE-HEIGHT: 150%; WORD-SPACING: 2em
}
TH {
FONT-SIZE: 9pt
}
TD {
FONT-SIZE: 9pt
}
TD.page {
COLOR: #000000; FONT-SIZE:9pt; LETTER-SPACING: normal; LINE-HEIGHT: 150%; WORD-SPACING: 2em
}
TD.title {
COLOR: #000000; FONT-FAMILY:verdana,宋体,新宋体
}
TD.detail {
COLOR: #9966ff; FONT-FAMILY:verdana,宋体,新宋体
}
</STYLE>
</head>
<body bgcolor="#FFFFFF" text="#000000" >
<div align="center"></div>
<table width="700" border="0" align="center">
<tr>
<table width="700" border="1" cellpadding="1" cellspacing="0" bordercolorlight="#9898ba" bordercolordark="#000000">
</table>
<table width="700" cellspacing="0" cellpadding="0" bgcolor="9898ba" border="0">
<tr valign="middle"></tr>
</table>
<div align="center"><b></div>
<br>
<table width="700" border="0">
<tr>
<td width="20"> </td>
<td colspan="2">
<div align="center">
<h3><b><!-- #BeginEditable "5" -->
<h3><font face="Verdana, Arial, Helvetica, sans-serif" >了解Servlet</font></h3>
<!-- #EndEditable --></b></h3>
</div>
</td>
<td width="20"> </td>
</tr>
<tr>
<td width="20"> </td>
<td colspan="2"><!-- #BeginEditable "6" --><br>
<p>什么是servlets <br>
·明白Servlet API以及与CGI相比较 <br>
·知道在servlet的主要的类的使用。 <br>
·能够实现简单的servlets </p>
<p><br>
·什么是servlet? <br>
·一般地,服务器端Java应用程序扩展了Web服务器的功能。 <br>
.在服务器上可以完整地运行 <br>
.没有必要下载到浏览器 <br>
.代替CGI脚本 <br>
·Servlets的优势在于: <br>
.方便性与灵活性 <br>
.安全性 <br>
.执行效率 </p>
<p>安全性优势 <br>
·在服务器的范围中调用 <br>
·能够约束servlet的调用 <br>
·在安全体系中能够成为单一(全局)信号的一部分 </p>
<p><br>
性能优势 <br>
·Run in the same context as application server <br>
·执行并且驻留在内存中 <br>
·有请求时提前被装入或装入 <br>
·通过HTTP请求维持对话 <br>
·减轻后置系统的负担 <br>
·多线程 <br>
·可伸缩于多处理器以及多机种系统(IBM WebSphere Performance Pack) </p>
<p>一般的Servlet调用 <br>
·客户建立一个Web服务请求,命名为一个Servlet,就如同URL的一部分 <br>
·Web服务器向由一个servlet类的对象所定位的Servlet引擎发送一个请求 <br>
·servlet引擎调用一个Servlets服务方法: </p>
<p>浏览器(客户)<====URL请求=====>Web服务器<===>servlet对象(应用程序服务器)
</p>
<p><br>
Java Servlet 应用程序接口API <br>
·JSDK包括了两个包: <br>
javax.servlet <br>
javax.servlet.http </p>
<p>javax.servlet.Servlet <br>
| 实现 <br>
javax.servlet.GenericServlet A <br>
| <br>
javax.servlet.http.HttpServlet A </p>
<p>Servlet <br>
·表现一项服务 <br>
·一般通过URL请求 <br>
·Servlets通过应用程序服务器被装入 <br>
·在服务的初始化阶段(如果是预装入) <br>
·在客户端首次请求时 <br>
·在servlet重新装入时 </p>
<p>servlet的生命周期 <br>
·在装入时init()方法被调用 <br>
·仅这一次 <br>
·当每个客户发出请求时,service()方法被调用 <br>
·当它被卸载时,destroy()方法被调用 </p>
<p>init() <br>
| <br>
service() <br>
| <br>
destroy() </p>
<p><br>
HTTP Servlet <br>
·一个HTTP-specific请求处理器 <br>
·加入两个HTTP-specific的方法 <br>
·doGet()--处理一个GET请求(URL) <br>
·doPost()--处理一个POST请求(HTML) <br>
·子类代替了这两个信息并且可能代替init()和destroy() <br>
·doGet()和doPost()作这些工作并且被service()调用 </p>
<p><br>
请求与响应 <br>
·service(),doGet()和doPost()方法都具体有两个参数: <br>
·HttpServletRequest--提供请求数据(参数)HttpSession信息等访问。 <br>
·HttpServletResponse--提供允许servelt向发出请求的客户的响应的服务 <br>
·大多数servlet程序是用来读出请求并且写入响应 </p>
<p><br>
HttpServletResponse <br>
·向客户提供通讯的通道 <br>
·允许servlet返回内容并且/或者是错误 <br>
·设置内容头(类型,长度......) <br>
·重定向服务器以返回一个指的URL </p>
<p>应答协议 <br>
·getWriter() <br>
·返回一个输出的PrintWriter <br>
·setContentType(String type) <br>
·为这个响应设置内容的类型 <br>
·类型是MIME型 <br>
·sendRedirect(String anURL) <br>
·重定向浏览器到一个新的URL </p>
<p><br>
简单的servelt </p>
<p>public class MyServlet extends HttpServlet { <br>
public void doGet( HttpServletRequest req, <br>
HttpServletResponse res) <br>
throws ServletException, IOException { <br>
// get stream to output HTML on! <br>
res. setContentType(" text/ html"); <br>
PrintWriter out = res. getWriter(); <br>
// send out a simple banner <br>
out. println("< HTML>< BODY>"); <br>
out. println("< h1> Hello World!</ h1>");
<br>
out. println("</ BODY></ HTML>"); <br>
} <br>
} </p>
<p>HttpServletRequest <br>
·提供客户请求 <br>
·"Getters"请求的特征,比如: <br>
·请求头部,内容类型,长度,方法.... <br>
·请求URL如同一个String <br>
·Servlet"path" <br>
·客户安全性类型 <br>
·访问请求参数(通过name) <br>
·请求中,数据在参与对象中的共享范围 </p>
<p><br>
请求协议 <br>
·getParmeterNames() <br>
·在HTML页上,返回一个的枚举的参数 <br>
·getParmeterValues(String name) <br>
·返回multi-valued参数的值 <br>
·getParameter(String name) <br>
·返回一个指定的命名的参数的值 <br>
·getReader() <br>
·返回BufferedReader到输入视图 </p>
<p>案例: <br>
<P> Please fill out this form with your name. <br>
Thanks! <br>
<FORM METHOD=" POST" <br>
ACTION="/ servlet/ NameServlet"> <br>
<P> Please enter your name: <br>
<P> First name: <INPUT NAME=" first" TYPE="
TEXT" <br>
SIZE=" 12" MAXLENGTH=" 20"> <br>
Surname: <INPUT NAME=" surname" TYPE=" TEXT"
<br>
SIZE=" 15" MAXLENGTH=" 25"> <br>
<P> Thank you! <INPUT TYPE=" SUBMIT"> <INPUT
<br>
TYPE=" RESET"> <br>
</ FORM> </p>
<p><br>
读入一个post <br>
public void doPost( HttpServletRequest req, <br>
HttpServletResponse res) <br>
throws ServletException, IOException <br>
{ <br>
… <br>
Enumeration enum = req. getParameterNames(); <br>
while (enum. hasMoreElements()) { <br>
String name = (String) enum. nextElement(); <br>
String value = req. getParameter( name); <br>
//… do something with each pair... <br>
} <br>
} </p>
<p>调用servelet <br>
最普遍使用的调用HttpServlet是通过类名(classname)比如: <br>
http://www.ibm.com/servlets/com.ibm.a.Myservlet </p>
<p>·"load/run by classname"的支持通过另一个称为"Invoker"的servlet所提供
<br>
·"Invoker"servlet试图找到servlet的类的路径 <br>
·考虑到会有无名的servlet,一个servlet用这种方法装入运行 <br>
在WebSphere中的servlet <br>
·另一方面,大多数的servlet引擎支持servlet通过名字注册 <br>
·被使用的参数可以初始化 <br>
·参数约束servlet的行为 <br>
·一个servlet可以提供不同的服务(在不同的"short names") <br>
·参数在init()方法中使用 <br>
·允许servlet被预装入 <br>
·通过RequestDispatcher,允许简单定位 <br>
·允许servlet被保护 </p>
<p>摘要 <br>
·我们已经看到Servlets的优势大于CGI <br>
·安全性,灵活性,效率 <br>
·我们已经介绍了Servlet的基本类和接口 <br>
·Servlets,GenericServlet,HttpServlet,HttpServletRequest,HttpServletResponse
</p>
<p><br>
VisulalAge for Java 的复习 <br>
·首先,需要知道: <br>
·IBM VisualAge for Java 基本概念 <br>
·IDE <br>
·Scrapbook <br>
·Debugger <br>
·VisualAge for Java与WebSphere之间的关系 <br>
·VisualAge for Java: <br>
·Visual Builders <br>
·Visual Application Builder <br>
·Enterprise Access Builder <br>
·Data,CICS,RMI,C++ <br>
· Many others <br>
工具: <br>
·IDE <br>
·AppletViewer <br>
·Smart Guides <br>
·Debugger <br>
·Browsers <br>
·Scrapbook <br>
类库 <br>
·JDK1.1.7 <br>
·JDK1.2 <br>
·IBM Enterprise Connectivity <br>
编译器和虚拟机 <br>
·Incremental <br>
·Java to byte code <br>
·Byte code to machine code translation <br>
·Multiple VMs <br>
部件: <br>
· JavaBeans <br>
·EJB develpement environment <br>
·WebSphere Test environment <br>
技术支持 <br>
·Integrated team environment <br>
·Scaleable </p>
<p>集成开发环境 <br>
·组织管理项目,类,方法 <br>
·组队开发--聚宝库 <br>
·导入及导出类文件到开发环境同Java文件一样 <br>
·优化编译 <br>
·视图:项目,类,界面,所有的问题 <br>
·搜索,智慧向导 <br>
·剪贴本,Debugger <br>
</p>
<p> </p>
<p> </p>
<!-- #EndEditable --></td>
<td width="20"> </td>
</tr>
<tr>
<td width="20" height="11"> </td>
<td width="541" height="11"><!-- #BeginEditable "7" --><!-- #EndEditable --></td>
<td width="101" height="11">
</td>
<td width="20" height="11"> </td>
</tr>
</table><div align="center"> <br>
</div>
</td>
</tr>
</table>
<div align="center">
<br>
</div>
</body>
<!-- #EndTemplate --></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -