资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
第六讲 JSP与ServLet技术(二)4. JavaServlet 4.1 4.1 ServletServlet的工作原理的工作原理servlet由支持servlet的服务器的servlet引擎负责管理和运 行。当多个客户请求一个servlet时,引擎为每个客户启动一个 线程而不是一个是启动一个进程,这些线程由servlet引擎服务 器来管理,与传统的CGI为每个客户启动一个进程相比较,效 率要高得多。4.2 4.2 ServletServlet的生命周期的生命周期Servlet是运行在服务器端的Java程序。一个servlet是 javax.servlet包中HttpServlet类的子类,由支持servlet的服务器 完成该子类的对象创建与初始化。4. JavaServlet 续14.2.1 init方法public void init(ServletConfig c) throws ServletException当客户端第一次请求servlet时,服务器servlet引擎创建该 servlet对象时调用该方法,该方法只被调用一次。其中, ServletConfig对象负责传递服务器设置信息。该方法可重写。创建 servlet运行 servlet销毁 Servlet第一次请求init()destroy()关闭服务器时客户请求1客户请求n线程1线程nservlet生命周期图service()4. JavaServlet 续24.3 4.3 编译和安装编译和安装servletservlet4.3.1 编译servlet为了编译servlet源文件,需要HttpServlet、 HttpServletRequest、HttpServletResponse等类,需要在环境 变量中包含servlet.jar文件。E:Apache Tomcat 4.0commonlibservlet.jar4.3.2 servlet字节码文件的存放目录(1) 所有web服务目录可使用的servlet存放位置如果让所有web服务目录都可以使用该servlet,那么创 建这个servlet的字节码文件需存放在E:Apache Tomcat 4.0commonclasses4. JavaServlet 续3当第一次请求servlet时,服务器创建一个servlet对象, 然后调用init()方法。此后对存放在common/classes目录下的 字节码文件进行了更新,如果服务器没有关闭的话,新的 servlet不会被创建。(2) 只对examples服务目录可用的servlet存放目录examples是Tomcat服务器默认的web服务目录之一。如 果想让某个servlet只对examples目录可用,那么创建该servlet 的字节码文件只需存放在webapps/examples/Web-inf/classes目 录中。服务器访问该目录中的servlet字节码文件时,首先检 查该字节码文件是否已被更新,如果重新修改过,就会消灭 servlet,并用新的字节码重新初化servlet。4. JavaServlet 续44.3.3 运行servlethttp:/IPAddress:port/任一web服务目录/servlet/servlet类名http:/IPAddress:port/examples/servlet/servlet类名例1 一个简单的servlet。E:MyWebHello.java /Hello.java 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);4. JavaServlet 续5public void service(HttpServletRequest request,HttpServletResponse response) throws IOException PrintWriter out=response.getWriter(); response.setContentType(“text/html;charset=GB2312“);out.println(“);out.println(“Hello world!“);out.println(“This is a simple servlet program.“);out.println(“); 4.3.4 带包名的servlet程序如果使用了包,如: package t1.t2; 则需在classes目录下建立如下目录结构: t1t2 然后将字节码文件拷贝到该目录中。4. JavaServlet 续6例2 处理HTML表单信息。(开平方)E:MyWebgetsqrt.html输入一个数,用servlet求这个数的平方根:4. JavaServlet 续7E:MyWebSqrt.java /Sqrt.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Sqrt extends HttpServlet public void init(ServletConfig config) throws ServletException super.init(config);public void service(HttpServletRequest request,HttpServletResponse response) throws IOException PrintWriter out=response.getWriter(); response.setContentType(“text/html;charset=GB2312“);out.println(“);String number=request.getParameter(“number“);double n=0;try n=Double.parseDouble(number);out.print(“+Math.sqrt(n);catch(NumberFormatException e) out.println(“Input nubmer is not correct!“);out.println(“exception:“+e.getMessage()+“);out.println(“); 4. JavaServlet 续8例3 多线程共享变量。(客户访问计数) /Count.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Count extends HttpServlet int c;public void init(ServletConfig config) throws ServletException super.init(config);c=0;public void service(HttpServletRequest request,HttpServletResponse response) throws IOException PrintWriter out=response.getWriter(); response.setContentType(“text/html;charset=GB2312“);out.println(“);c+;out.println(“your are “+c+“th“+“ people.“);out.println(“);
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号