Servlet和JSP知识复习(2)Servlet基础
·生成HTML的servlet
·告知浏览器接下来发送的时HTML
-
response.setContentType(“text/html”);
·修改println语句以构建合法的Web页面
- 打印语句应用输出相应的HTML标签。
·用形式语法验证器 检查生成的HTML
- http://www.htmlhelp.com/tools/validator/
·servlet的打包
·将文件移动到与预想的包名相匹配的子目录中
·在类文件中插入包语句
- E.g
package org.waityou.test.servlet;
·要保证CLASSPATH指出顶层目录
·在URL中包括包名
- E.g http://localhost/servlet/org.waityou.test.servlet.TestServlet
·一些简单的、用以构建HTML的实用工具类
public class
ServletUtilities {
public static
final String DOCTYPE =
"<!DOCTYPE
HTML PUBLIC \"-//W3C//DTD
HTML 4.0 " +
"Transitional//EN\">";
public static
String headWithTitle(String title) {
return(DOCTYPE +
"\n" +
"<HTML>\n"
+
"<HEAD><TITLE>"
+ title +
"</TITLE></HEAD>\n");
}
...
}
·不要走极端
- 完整的HTML生成包常常不能很好地工作
- 应用JSP框架时更好的解决方案。
·servlet的生命周期
·init
-
仅在servlet首次载入时执行一次。
不是每次请求都要调用。
·service
-
在新线程中由服务器为每个请求而调用。发送到
doGet,doPost等。
不要覆盖这个方法!
·doGet,doPost,doXxx
-
处理GET,POST,等请求。
-
覆盖这些方法以提供期望的行为。
·destroy
-
在服务器删除servlet的实例时调用。
不是每次请求后都调用。
·为什么不应该覆盖service
·之后可以通过加入doPut,doTrace等支持其他服务。
·通过添加getLastModified方法,就可以支持修改日期。
·service方法自动提供下述支持:
- HEAD请求
- OPTIONS请求
- TRACE请求
·其他方案:让doPost调用doGet
·servlet的调试
·使用打印语句;在桌面计算机上运行服务器
·使用Apache Log4J
·使用IDE集成的调试器
·直接查看HTML源码
·返回错误页面给客户
-
需要针对缺失或异常数据预先规划
·使用日志文件
- log(“message”)或log(“message”, Throwable)
·分别处理请求和响应数据
·停止并重新启动服务器
·小结
·主要的servlet代码都在doGet或doPost中:
-
HttpServletRequest包含输入信息
-
HttpServletResponse允许我们设定发送出去的信息
·调用setContentType指定MIME类型
·调用getWriter获取针对客户的Writer
·一次性的设置代码放在init中
- servlet仅仅初始化并载入一次
- servlet被多次调用
- 初始化参数在web.xml中设定。