Servlet和JSP知识复习
1.Servlet的功用
·读取客户程序发送来的显式数据(表单数据)
·读取客户程序发送来的隐式数据(请求报头)
·生成相应的结果
·发送显式的数据给客户程序(HTML)
·发送隐式的数据给客户程序(状态代码和响应报头)
2.为什么要动态地构建Web页面?
·Web页面的内容建立在用户提交的数据之上
·Web页面的内容由频繁变动的数据导出
·Web页面用到了来自于数据库或其他服务器端资源的信息
3.servlet相比于“传统”CGI技术的优点
·高效率
- 使用线程取代操作系统进程,单一servlet副本
·便利
- 众多高层实用程序
·功能强大
- 提供数据共享,连接共享,持续存储等诸多功能
·可移植性强
- 几乎可以在所有操作系统、所有服务器上运行
·花费少
- 有众多免费或收费低廉的服务器可以选择
·安全
- 不设计外壳程序,也就杜绝了使用转移符的攻击。
没有缓冲区溢出的问题。
·主流
4.JavaServer Pages(JSP)- 对servlet功能的扩展
5.实现一种简单的部署方法
·复制成快捷方式或符号链接
- 制作install_dir/webapps/ROOT/WEB-INF/classes的快捷方式。
- 对于不使用包的servlet,将.class文件复制到这个快捷方式。
- 对使用包的servlets,将整个目录复制到快捷方式
·对于初学者这是最简单的方法
·使用javac的-d选项
- 使用这种方式可以将源文件放置在一个位置,自动将
.class文件放置到另外的位置。
·由IDE来负责部署工具。
·使用ant或类似工具
- 在使用定制Web应用时,Ant尤其普遍
6.Web应用:预览
·学习
- 使用默认Web应用(在Tomcat中为ROOT)
- 使用默认URL(http://.../servlet/ServletName )
- 有点
·更简单
·不用重新启动服务器或编辑web.xml就能够进行测试
·部署
- 使用定制Web应用(在Tomcat中为install_dir/webapps
中的一个目录,结构与ROOT类似)
- 在WEB-INF/web.xml注册定制URL
- 有点
·URL看起来更好一些
·通过使用注册的URL,可以获得许多高级特性(初始化参数
、安全、过滤器等)
7.制作定制Web应用
1.以默认Web应用的结构为范本生成一个目录。
·HTML(以及JSP,如果有的话)文档放在顶层目录。
·web.xml文件安置在WEB-INF子目录。
·servlet和其他类不是在WEB-INF/classes中就是在
WEB-INF/classes中与包名相匹配的子目录中。
·在Tomcat中,整个目录都在install_dir/webapps中。
2.更新CLASSPATH。
8.制作定制Web应用
3.在URL中使用目录名
·所有的URL都应该式下面的形式
4.使用web.xml指派定制URL
·使用servlet和servlet-mapping元素
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>
org.waityou.test.servlet.TestServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/testservlet</url-pattern>
</servlet-mapping>
9.小结
·servlet高效、可移植、功能强大且在行业中广泛采用
·和实际的部署服务器无关,可以在桌面计算机运行免费的服务器用于开发
·入门之始:
- 设置CLASSPATH
·servlet JAR文件
·包的顶级目录
- 将类文件存放到正确的位置
·.../WEB-INF/classes
- 使用正确的URL,一般为http://host/servlet/ServletName
Servlet和JSP知识复习
1.Servlet的功用
·读取客户程序发送来的显式数据(表单数据)
·读取客户程序发送来的隐式数据(请求报头)
·生成相应的结果
·发送显式的数据给客户程序(HTML)
·发送隐式的数据给客户程序(状态代码和响应报头)
2.为什么要动态地构建Web页面?
·Web页面的内容建立在用户提交的数据之上
·Web页面的内容由频繁变动的数据导出
·Web页面用到了来自于数据库或其他服务器端资源的信息
3.servlet相比于“传统”CGI技术的优点
·高效率
- 使用线程取代操作系统进程,单一servlet副本
·便利
- 众多高层实用程序
·功能强大
- 提供数据共享,连接共享,持续存储等诸多功能
·可移植性强
- 几乎可以在所有操作系统、所有服务器上运行
·花费少
- 有众多免费或收费低廉的服务器可以选择
·安全
- 不设计外壳程序,也就杜绝了使用转移符的攻击。
没有缓冲区溢出的问题。
·主流
4.JavaServer Pages(JSP)- 对servlet功能的扩展
5.实现一种简单的部署方法
·复制成快捷方式或符号链接
- 制作install_dir/webapps/ROOT/WEB-INF/classes的快捷方式。
- 对于不使用包的servlet,将.class文件复制到这个快捷方式。
- 对使用包的servlets,将整个目录复制到快捷方式
·对于初学者这是最简单的方法
·使用javac的-d选项
- 使用这种方式可以将源文件放置在一个位置,自动将
.class文件放置到另外的位置。
·由IDE来负责部署工具。
·使用ant或类似工具
- 在使用定制Web应用时,Ant尤其普遍
6.Web应用:预览
·学习
- 使用默认Web应用(在Tomcat中为ROOT)
- 使用默认URL(http://.../servlet/ServletName )
- 有点
·更简单
·不用重新启动服务器或编辑web.xml就能够进行测试
·部署
- 使用定制Web应用(在Tomcat中为install_dir/webapps
中的一个目录,结构与ROOT类似)
- 在WEB-INF/web.xml注册定制URL
- 有点
·URL看起来更好一些
·通过使用注册的URL,可以获得许多高级特性(初始化参数
、安全、过滤器等)
7.制作定制Web应用
1.以默认Web应用的结构为范本生成一个目录。
·HTML(以及JSP,如果有的话)文档放在顶层目录。
·web.xml文件安置在WEB-INF子目录。
·servlet和其他类不是在WEB-INF/classes中就是在
WEB-INF/classes中与包名相匹配的子目录中。
·在Tomcat中,整个目录都在install_dir/webapps中。
2.更新CLASSPATH。
8.制作定制Web应用
3.在URL中使用目录名
·所有的URL都应该式下面的形式
4.使用web.xml指派定制URL
·使用servlet和servlet-mapping元素
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>
org.waityou.test.servlet.TestServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/testservlet</url-pattern>
</servlet-mapping>
9.小结
·servlet高效、可移植、功能强大且在行业中广泛采用
·和实际的部署服务器无关,可以在桌面计算机运行免费的服务器用于开发
·入门之始:
- 设置CLASSPATH
·servlet JAR文件
·包的顶级目录
- 将类文件存放到正确的位置
·.../WEB-INF/classes
- 使用正确的URL,一般为http://host/servlet/ServletName
生成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 /"-//W 3C //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中设定。