网站域名后缀代表什么,网站开发 微盘,制作网页整体规划方案,网站首页设计素材Servlet处理请求过程 B/S请求响应模型 Servlet介绍
JSP是Servlet的一个成功应用#xff0c;其子集。
JSP页面负责前台用户界面#xff0c;JavaBean负责后台数据处理#xff0c;一般的Web应用采用JSPJavaBean就可以设计得很好了。
JSPServletJavaBean是MVC
Servlet的核心… Servlet处理请求过程 B/S请求响应模型 Servlet介绍
JSP是Servlet的一个成功应用其子集。
JSP页面负责前台用户界面JavaBean负责后台数据处理一般的Web应用采用JSPJavaBean就可以设计得很好了。
JSPServletJavaBean是MVC
Servlet的核心思想在服务器端创建能响应用户请求的对象即Servlet对象。
Servlet类属于javax.servlet.http包中的HttpServlet类的子类。
Servlet 与 JSP 内置对象
获得内置对象的方法
获得 out 对象
JSP 中的 out 对象一般可以使用 doXXX 方法中的 response 参数获得
默认情况下out 对象是无法打印中文
解决方法response.setContentType(text/html;charsetgb2312);
获得 request 和 response 对象
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//将 request 参数当成 request 对象使用
//将 response 参数当成 response 对象使用
}
获得 application 对象 ServletContext application this.get ServletContext();
//将 application 当成 application 对象来使用
配置环境 使用servlet的步骤
1.配置 servlet-api.jar
2.编码 *.java
3.编译生成字节码文件 *.class
4.部署
5.调用
JDK 内置包中不包含编译servlet源文件需要HttpServlet、HttpServletRequest等类因此需要在环境变量中包含 servlet.jar这个 jar 文件在 TOMCAT 安装目录的 common\lib 文件下如果没有可以网上下载。
编辑 classpath加入%CATALINA_HOME%\lib\servlet-api.jar
或将servlet.jar文件拷贝到jdk安装目录的jdk\jre\lib\ext中
部署Servlet
Hello.java
package china.dalian;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Hello extends HttpServlet
{ public void init(ServletConfig config) throws ServletException { super.init(config); } public void service (HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType(“text/html;charsetgb2312”); PrintWriter out reponse.getWriter(); out.println(“htmlbody”); out.println(“h2欢迎学习servlet。/h2”); out.println(“/body/html”); }
将生成的字节码文件如 Hello.class 保存在Tomcat服务器 WEB-INF\classes 目录下对应包名文件中包名为 pakage china.dalian 在具体的目录为
WEB-INF\classes\china\dalian
在Web根目录下编辑 web.xml 文件对 Servlet 文件进行配置
servlet 节如何生成该servlet
servlet-mapping节如何调用该servlet
Servlet与JSP的区别 Servlet是使用Java Servlet接口API运行在Web应用服务器上Java程序其功能十分强大它不但可以处理Http请求中的业务逻辑而且还可以输出HTML代码来显示指定页面。 JSP是一种在Servlet规范之上的动态网页技术在JSP页面之中同样可以编写业务逻辑处理Http请求也可以通过HTML代码来编辑页面在实现功能上Servlet与JSP貌似相同实质存在一定的区别表现在以下方面
1、角色不同
2、编程方法不同
3、Servlet需要编译后运行
4、速度不同
Servlet技术特点 Servlet使用Java语言编写它不仅继承了Java语言中的优点而且Servlet还对Web的相关应用进行了封装同时Servlet容器还提供了对应用的相关扩展无论是在功能、性能、安全等方面都十分优秀其技术特点表现在以下方面。
1、功能强大
2、可移植
3、性能高效
4、安全性高
5、可扩展
Servlet代码结构 在Java中通常所说的Servlet是指HttpServlet对象在声明一个对象为Servlet时需要继承HttpServlet类。 HttpServlet类是Servlet接口的一个实现类继承此类后可以重写HttpServlet类中的方法对HTTP请求进行处理。 Servlet 工作原理-生命周期
Servlet 工作原理-对象模型 Servlet 工作原理 n init 方法 public void init ( ServletConfig config ) throws ServletException n service 方法 public void service ( HttpServletRequest request HttpServletResponse response ) throw ServletException, IOException n destroy 方法 public destroy ( )n
init方法
web-app … servlet servlet-nameInitExample/servlet-name servlet-classServletInit/servlet-class init-param param-namelogin/param-name param-valuesnoopy/param-value /init-param /servlet …
/web-app 对于web.xml中定义的param变量可以通getInitParameter() 方法来获得。具体格式为
String str getInitParameter(“xxx”); n service方法 n destroy 方法 n Servlet类可以直接继承这个方法一般不需要重写。 public destroy() 共享变量 在Servlet中声明的某些成员变量会被所有请求该servlet的用户共享。 例 servlet共享变量来计算pi的值。 PI/4 1 - 1/3 1/5 - 1/7 1/9 - 1/11 …… doGet和doPost方法 服务器接收到用户请求后调用service方法检查http的请求类型如get、post并在service方法中根据用户的请求方式对应地调用doGet和doPost方法。 因此不必重写service方法可直接继承service方法在servlet类中重写doPost或doGet方法达到同样的效果。 重定向与转发 重定向 HttpServletResponse类中通过方法 void sendRedirect(java.lang.String location) 可实现页面的跳转。 response.sendRedirect (“xxx.jsp”); 注意该方法跳转后的页面不能获得之前页面用户提交的数据。 转发 RequestDispatcher对象可以把用户对当前的JSP页面或servlet的请求转发给另一个JSP页面或servlet并且将请求对象和相应对象传递给目标页面。 第一步得到RequestDispatcher对象 RequestDispatcher rd request.getRequestDispatcher(“xxx.jsp”); 第二步转发 rd.forward( request, response); 转发 vs 重定向 m 默认情况下 , SendRedirect 不会保留请求对象中参数需要保存请求的相关信息时要用 请求转发 m SendRedirect 会在客户端呈现跳转后的 URL 地址 请求转发 完全是在服务器上进行浏览器地址栏中的地址保持不变 m 请求转发 不能将请求发到其他的 web 应用上 SendRedirect 可以 使用session HttpServletRequest对象可以调用getSession方法获取用户的session对象。该session对象即第四章中的session对象。 格式 HttpSession session request.getSession(true); 可以在servlet中使用session对象及其方法实现对同一用户的确认。 Servlet API编程常用接口和类 Servlet接口 方 法 说 明 public void init(ServletConfig config) Servlet实例化后Servlet容器调用此方法来完成初始化工作 public void service(ServletRequest request,ServletResponse response) 此方法用于处理客户端的请求 public void destroy() 当Servlet对象应该从Servlet容器中移除时容器调用此方法以便释放资源 public ServletConfig getServletConfig() 此方法用于获取Servlet对象的配置信息返回ServletConfig对象 public String getServletInfo() 此方法返回有关Servlet的信息它是纯文本格式的字符串如作者、版本等 m 创建一个 servlet 实现向客户端输出一个字符串 ServletConfig接口 方 法 说 明 public String getInitParameter(String name) 此方法返回String类型名称为name的初始化参数值 public Enumeration getInitParameterNames() 获取所有初始化参数名的枚举集合 public ServletContext getServletContext() 用于获取Servlet上下文对象 public String getServletName() 返回Servlet对象的实例名 HttpServletRequest接口 方 法 说 明 public String getContextPath() 返回请求的上下文路径此路径以“/”开关 public Cookie[] getCookies() 返回请求中发送的所有cookie对象返回值为cookie数组 public String getMethod() 返回请求所使用的HTTP类型如get、post等 public String getQueryString() 返回请求中参数的字符串形式如请求MyServlet?usernamemr则返回usernamemr public String getRequestURI() 返回主机名到请求参数之间部分的字符串形式 public StringBuffer getRequestURL() 返回请求的URL此URL中不包含请求的参数。注意此方法返回的数据类型为StringBuffer public String getServletPath() 返回请求URI中的Servlet路径的字符串不包含请求中的参数信息 public HttpSession getSession() 返回与请求关联的HttpSession对象 HttpServletResponse接口 方 法 说 明 public void addCookie(Cookie cookie) 向客户端写入cookie信息 public void sendError(int sc) 发送一个错误状态码为sc的错误响应到客户端 public void sendError(int sc, String msg) 发送一个包含错误状态码及错误信息的响应到客户端参数sc为错误状态码参数msg为错误信息 public void sendRedirect(String location) 使用客户端重定向到新的URL参数location为新的地址 HttpServlet类 GenericServlet类实现了javax.servlet.Servlet接口为程序的开发提供了方便但在实际开发过程中大多数的应用都是使用Servlet处理HTTP协议的请求并对请求作出响应所以通过继承GenericServlet类仍然不是很方便。javax.servlet.http.HttpServlet类对GenericServlet类进行了扩展为HTTP请求的处理提供了灵活的方法。 public abstract class HttpServlet extends GenericServlet implements Serializable GenericServlet类 Servlet创建 在编写一个Servlet对象时必须实现javax.servlet.Servlet接口但在Servlet接口中包含5个方法也就是说创建一个Servlet对象要实现这5个方法这样操作非常不方便。javax.servlet.GenericServlet类简化了此操作实现了Servlet接口。 public abstract class GenericServlet extends Object implements Servlet, ServletConfig, Serializable Servlet的创建十分简单主要有两种创建方法。第一种方法为创建一个普通的Java类使这个类继承HttpServlet类再通过手动配置web.xml文件注册Servlet对象。此方法操作比较繁琐在快速开发中通常不被采纳而是使用第二种方法——直接通过IDE集成开发工具进行创建。 使用集成开发工具创建Servlet非常方便下面以Eclipse为例介绍Servlet的创建过程其他开发工具大同小异。 Servlet配置 要使Servlet对象正常地运行需要进行适当的配置以告知Web容器哪一个请求调用哪一个Servlet对象处理对Servlet起到一个注册的作用。Servlet的配置包含在web.xml文件中主要通过以下两步进行设置。 1声明Servlet对象 2映射Servlet m 例 创建名为 MyServlet 对象继承了 HTTPServlet 类重写 doGet()方法 总结概括 Servlet的生命周期 m 1 . 客户端向服务器 发出请求 服务器根据客户端的请求找到相应的 Servlet 类 m 2. 判断该 Servlet 是否在内存中加载若未加载创建该 Servlet 实例调用 init() 方法完成 初始化操作 。 若已经加载转 3 m 3. 调用 service() 方法对客户端进行 响应 。等待下一次请求 。 在 Servlet 生命周期中 service() 方法是其中的核心。每当客户端向 Servlet 发出一个请求时该方法就会被调用 , 对用户的请求进行处理并返回响应。 m 4. 结束调用 destroy() 方法 。 当服务器端不再需要该 Servlet 的时候服务器调用 destroy() 方法卸载 该 Servlet 释放 Servlet 运行时占用的资源。