资源预览内容
第1页 / 共59页
第2页 / 共59页
第3页 / 共59页
第4页 / 共59页
第5页 / 共59页
第6页 / 共59页
第7页 / 共59页
第8页 / 共59页
第9页 / 共59页
第10页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
编写和使用Servlet课程目标了解Servlet相关的类包掌握如何编写和使用Servlet理解掌握init()、service()、doPost()和doGet() 方法理解Servlet的工作原理和生命周期请求与转发引入Java Servlet技术就是在服务器端创建响应 用户请求对象的技术,被创建的对象习惯 上称为一个Servlet对象。JSP是在Servlet的基础上产生的,屏蔽了其 创建的过程,只是关心页面本身的结构和 标记采用Servlet可以更好的处理数据请求 Servlet APIjavax.servlet包,定义了独立于协议的服 务器小程序的接口和类javax.servlet.http包,定义开发HTTP通信 的服务器小程序的接口和类javax.servlet.annotation,定义9个注解类 型和两个枚举类型javax.servlet.description,定义以编程方 式访问Web应用程序配置信息的类型一. Servlet对象的创建与使用HttpServlet类及对象的创建部署Servlet运行Servlet1.1 HttpServlet类及对象的创建创建一个Servlet对象的类就是编写一个 Java文件,实现一个特殊类的子类。这个特殊的类就是javax.servlet.http包中 的HttpServlet类。HttpServlet类实现了 Servlet接口,实现了响应用户的方法1.1 HttpServlet类及对象的创建简单实例:Hello.javapackage star.moon;import java.io.*; import javax.servlet.*; import javax.servlet.http.*;1.1 HttpServlet类及对象的创建WebServlet(name=“helloServlet“,urlPatterns =“/hello.do“)public class Hello extends HttpServlet public void init (ServletConfig config)throws ServletException super.init(config);1.1 HttpServlet类及对象的创建public void service (HttpServletRequest request,HttpServletResponse response)throws IOException response.setContentType (“text/html;charset=GB2312“);PrintWriter out=response.getWriter();out.println(“);out.println(“您好,欢迎您。Hello,you are Welcome“);out.println(“(“); 思考:其中service方法可以用doGet及doPost进 行替换为什么在继承HttpServlet之后重新定义了 doGet,而且自动调用doGet方法呢?1.2 部署Servlet编译保存如果Servlet类Hello的包名是:star.moon首先将Servlet源文件编译生成字节码文件 :Hello.class 保存到: Web服务目录WEB-INFclassesstarmoon 2. 部署Servlet注释法,被Servlet3.0所支持。 WebServlet(name=“*“,urlPatterns=“*“ ) 例如: WebServlet(name=“helloServlet“,urlPatterns =“/hello.do“) 使用WebServlet为Servlet指定一个名称 helloServlet,一个URL映射模式hello.do 访问地址 http:/127.0.0.1:8080/MyJavaWeb/hello.do2. 部署Servlet编写web.xml文件 /根标记互不相同hello com.demo2.Hello所在的类名hello/hello.doURL的路径名1.3 运行Servlet根据web.xml部署文件来请求服务器执行一 个Servlet对象 根据 web.xml文件中标记 指定的格式输入请求, 例如:http:/127.0.0.1:8080/MyJavaHello/hello.doWeb应用程序的文件组织与部署test2:web应用程序的所有文件test2WEB-INF:部署描述符文件web.xml及以 下三个文件夹test2WEB-INFclasses:存放Servlet和 javaBean相关的类文件test2WEB-INFlib:所需的类包(JAR文件)test2WEB-INFtags:标签文件test2WEB-INFweb.xml:web应用程序的配置 和部署信息二、 Servlet生命周期Servlet的生命周期 初始化:init()方法。(1次)响应请求:service()方法或doGet () 、doPost () 方法。(多次)从服务器中移除: destroy()方法。(1次)二、 Servlet生命周期init()方法初始化Servlet对象。Servlet对象第一次被 请求加载时,服务器会创建一个Servlet对 象,该对象自动调用init()方法完成必要的 初始化工作传递一个ServletConfig对象给init方法,它 包含Web应用程序的配置信息(web.xml 中配置)获取的初始化参数二、 Servlet生命周期service()方法调用service()方法响应客户的请求传递两个参数:通过ServletRequest 对 象得到客户端相关信息和请求信息;通过 ServletResponse对象实现对客户端的响 应二、 Servlet生命周期当请求来时,容器自动调用Servlet的service() 方法,根据HttpServlet的service定义,就是判 断HTTP请求方式,分别调用doGet()、doPost() 等方法HttpServlet中的service()方法对请求方式的顺序 :1.doGet()2.doHead()3.doPost()4.doPut()二、 Servlet生命周期doGet()方法和doPost()方法 直接继承service方法改在Servlet类中重写doPost()或doGet()方法来响应用 户的请求;增强响应灵活性,降低服务器负担方法的两个重要参数request:与内置对象request含义完全一致response:与内置对象response含义完全一致二、 Servlet生命周期destroy()方法当一个Servlet实例应该从服务器中移除时,调 用destroy()方法,释放其使用的资源。二、 Servlet生命周期客户端Servlet 容器Servlet 对象发送请求解析请求创建实例调用 init() 调用service()输出响应信息调用 destroy()返回响应三、 通过JSP调用Servlet表单向Servlet提交数据computercom.demo2.Computercomputer/getResult三、通过JSP调用Servlet表单向Servlet提交数据(续)givenumber.jspgetResult思考:如果givenumber.jsp存放在子目录number 下,是否还能正确访问getResult?三、通过JSP调用Servlet通过超链接访问Servletshowcom.demo2.ShowLettershow/helpMeShow三、通过JSP调用Servlet通过超链接访问Servlet (续)showLetter.jsp单击超链接查看英文字母表:查看英文字 母表helpMeShow四、URL模式设置requestURI=环境路径+Servlet路径+路径信息环境路径:请求参数的getContextPath()获取路径映射:/*,代表所有的路径;扩展映射:*.开头的,代表符合后缀名的所有路径;根目录:空字符串”,代表/ 的请求预设Servelt:仅包括/ 的URL模式,找不到对应的URL 时,使用预设Servlet完全匹配:路径上严格对应如果环境路径在URL请求上有重叠,则从最严格 的开始匹配。四、URL模式设置Servlet路径:getServletPath()获取是应”/”开头的,但/*及”除外。路径信息:getPathInfo()获取除环境路径及Servlet路径外额外路径信息http:/localhost:8080/test2/servlet/hello.view实验课后实训题17中(1)(2)(P57)五 请求与转发HttpServlet类中有针对Http请求和发送响应 的方法HttpServletRequest接口HttpServletResponse接口HttpServletRequest当HTTP转发给Web容器时,容器会收集相 关信息并将其信息包装在一个HttpServletRequest 对象中请求信息的内容请求行:请求的方式(比如:GET或POST) 、请求资源和使用的协议、请求的头信息(Header:)信息体的附加信息 ,如主机地址等信息体:请求的参数名称和参数值等信息 1 获取请求信息 getParameter获取请求的参数名称和参数值信息 。得到某参数值的语法为:String username=request.getParameter(“name”);getParameterValues获取复选框或列表的值可以通 过此方法得到: String textContent = request. getParameterValues(“param”);注意可能得到空对象null(没有提交数据)1 获取请求信息getParameterNames:使用此方法可以知道请求中有多 少请求参数, Enumeration e =req.getParameterNames(); while (e.hasMoreElements() String param=e.nextElement(); getParameterMap:将请求参数以Map对象返回, Map的键(Key)是请求参数名称,值(Value)是请 求参数值。1 HttpServeltRequest举例提交信息 login.jsp用户名:密码:1 HttpServeltRequest举例接受信息Servlet *.java(Servlet) request.setCharacterEncoding(“UTF-8“); /接受从登录页面传过来的信息String name=request.getParameter(“name“); /接受密码String pwd=request.getParameter(“pwd“);请求对象的常用方法 getProtocol():获获取请请求使用的通信协议协议 ,如http/1.1等。getServletPath():获获取请请求的JSP页页面所在的目录录。getContentLength():获获取HTTP请请求的长长度。getMethod():获获取表单单提交信息的方式,如POST或GET。getHeader(String s):获获取请请求中头头的值值。getHeaderNames():获获取头头名字的一个枚举举。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号