




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java与J2EE架构,计算机学院,第5章 Servlet技术,5.1 Servlet概述 5.2 Servlet编程 5.3 Servlet生存周期,5.1 Servlet概述,背景知识 在网上浏览网页,需要一个Web服务器,浏览网页的过程就是浏览器通过HTTP协议与Web服务器交互的过程. 在过去,大多是静态网页,因此只须把资源放在Web服务器上供浏览即可. 随着应用发展,客户端与服务器需要动态交互(动态页面),为了实现这一目标,需要开发一个遵循HTTP协议的服务器端应用软件来处理各种用户请求。,如jsp、servlet、asp、php等,J2EE架构,客户端,Web层,商业逻辑层,数据库层,什么是Servlet,Servlet是一种服务器端Java应用程序. Servlet能动态响应客户端请求,生成动态的Web页面,从而扩展服务器的功能. Servlet由Servlet容器管理(Servlet的运行环境)。,Tomcat就是一个常用的Servlet/JSP容器。,Servlet特点,高效 每个请求由一个轻量级的Java线程处理.(而不是重量级的进程) 移植性好 Servlet用Java编写,几乎所有的主流服务器都支持 功能强大 可创建动态内容HTML页面 可创建嵌入到现有HTML页面中的一部分HTML页 与其它服务器资源(包括数据库和Java程序)进行通信 可处理多个客户机连接,注意:Servlet不是线程而是一个Java对象。,【return】,5.2 Servlet编程,5.2.1 Sevlet处理静态网页 5.2.2 Sevlet处理动态网页,Servlet不是独立的应用程序,没有main方法. Servlet不是由用户调用,而是由Servlet容器调用.,【return】,5.2.1 Sevlet处理静态网页,Sevlet程序创建步骤: 新建 Web Project项目(命名为testServlet). 在当前Web右键 new Servlet: Package为:servlets 文件名为:hello(.java) Options:选Create Inherit Methods和Create doGet,package servlets; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class hello extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(“text/html“); PrintWriter out = response.getWriter(); out.println(“); out.println(“); out.println(“ A Servlet“); out.println(“ “); out.print(“ This is “); out.print(this.getClass(); /得到servlet类名 out.println(“, using the GET method“); out.println(“ “); out.println(“); out.flush(); out.close(); ,servlet包,doGet方法,把客户端请求和响应封装成Servlet请求和响应对象传给Servlet,使用PrintWriter对象的print()或println() 方法编写 Servlet 响应返回给客户端,Sevlet程序创建步骤(续):,部署Servlet: 右键Tomcat服务器Add Deployment,Sevlet程序创建步骤(续):,运行Servlet: Tomcat启动情况下,在浏览器中输入: http:/localhost:8080/testServlet/servlet/hello,servlet程序在tomcat中部署的映射,web项目在tomcat中部署的虚拟路径, hello servlets.hello hello /servlet/hello ,实际的servelt类,注:servlet程序修改后需要重启Tomcat以实现重新部署,示例用servlet实现如下页面,参考,public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(“text/html“); PrintWriter out = response.getWriter(); out.println( “ + “ + “ Haha “ + “ + “ + “ Hello World!“ + “ + “); out.flush(); out.close(); ,练习,参考,public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(“text/html“); PrintWriter out = response.getWriter(); for(int i=1;iHello!“); out.flush(); out.close(); ,【return】,5.2.2 Sevlet处理动态网页-doGet()方法,页面间 传递数据,前台:Html或JSP 后台:Servlet,实现参考,在testServlet项目中创建(修改)index.jsp文件,在body中添加代码: 在hello的doGet()方法中使用代码:, 输入: ,out.print(“你输入的是:“+request.getParameter(“a“);,跳转到后台Servlet的url-pattern,使用HttpServletRequest对象的getParameter()方法来获取表单提交的数据,Html文档也行,注意观察IE地址栏中参数的显示,运行测试,先运行index.jsp文件。 方法1:直接在MyEclipse中运行(jsp文档运行时会自动重运行tomcat),方法2: 先启动Tomcat; 然后在IE:http:/localhost:8080/testServlet/,一些问题,中文输入问题 method=“post” 问题 ,JSP中文问题, 改成 pageEncoding=“GB2312“ 或 pageEncoding=“GBK“,GBK编码是GB2312编码的超集,Servlet中文问题,运行时显示中文: response.setContentType(“text/html; charset=gb2312“); 或再增加语句: response.setCharacterEncoding(“GB2312“); 获取中文value值(jsp和servlet均可使用) String str=request.getParameter(“a“); byte b=str.getBytes(“ISO-8859-1“); str=new String(b);,补充字符集,Servlet中文处理示例,public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(“text/html;charset=gb2312“); PrintWriter out = response.getWriter(); String str=request.getParameter(“a“); byte b=str.getBytes(“ISO-8859-1“); str=new String(b); out.print(“你输入的是:“+str); out.flush(); out.close(); ,method=“post“ 问题,原来的Servlet程序无法搞定!, 输入: ,知识点回顾,Servlet编程注意,当客户端通过HTML表单发出一个HTTP Get请求或直接请求一个URL时,Servlet的doGet()方法被调用。 当客户端通过HTML表单发出一个HTTP Post请求时, Servlet的doPost()方法被调用。,Sevlet处理动态网页-doPost()方法,页面间 传递数据,实现参考,在testServlet项目创建(修改)index.jsp文件,在body中添加代码: 在hello的doPost()方法中使用代码即可:, 输入: ,out.print(“你输入的是:“+request.getParameter(“a“);,Servlet的url-pattern,注意提交方法,说明,doGet()和doPost()可以同时存在,以应付客户端不同的HTTP传送数据的方式。 如果doGet()和doPost()代码相同,可直接使用service()方法:直接将doGet改名为service即可。,练习计算start到end的和,doPost方法参考, start: end: ,index.jsp, int start=Integer.parseInt(request.getParameter(“start“); int end=Integer.parseInt(request.getParameter(“end“); int sum=0; for(int i=start;i=end;i+)sum+=i; ,getpostdata.java (doPost方法),练习简单的登陆页面,参考, 用户名: 密  码: ,String sname=“wustzz“, spsd=“123456“; if (sname.equals(request.getParameter(“username“) if (spsd.equals(request.getParameter(“psd“) else /密码不正确 else /用户名不正确,index.jsp,getpostdata.java (doPost方法),多值如何处理?,String paramValues = request.getParameterValues(“fruits“); for(int i=0;iparamValues.length;i+) out.println(paramValuesi);,多值标签的名称,返回字符串数组,参考, 你喜爱的水果: 苹果 西瓜 桃子 葡萄 ,PrintWriter out = response.getWriter(); String paramValues = request.getParameterValues(“friuts“); for(int i=0;iparamValues.length;i+) out.print(paramValuesi+“ “);,index.jsp,getpostdata.java (doPost方法),改动处理中文值,public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(“text/html;charset=gb2312“); PrintWriter out = response.getWriter(); String str=“; String paramValues = request.getParameterValues(“friuts“); for(int i=0;i“; out.print(“你喜欢的水果是:“+str); out.flush(); out.close(); ,如果没有任何选择呢? 则需加空值判断,练习获取提交的个人信息, 专业: 计算机科学与技术 软件工程 网络工程 班级: 姓名: 性别:男 女 专业课程(可多选): J2EE架构 .NET架构 Java程序设计 C程序设计 ,index.jsp,【return】,4.3 Servlet生存周期,Servlet的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入Servlet时结束。 主要有三个阶段: 初始化 请求处理 终止,init()、service()和destroy() 它们将分别在Servlet的不同阶段被调用。,init()方法,当Servlet类实例化后,容器加载 init() ,以通知 Servlet 它已进入服务行列。 init()方法必须被加载,Servelt才能接收和请求。 如果要载入数据库驱动程序、初始化一些值等,程序员可以重写这个方法。一般情况下,这个方法一般为空。,destroy()方法,卸载Servlet时,调用destroy()方法,释放获得的资源. 服务器在完成所有服务调用之后,或者在经过服务器特定的秒数之后(超时),调用destroy()方法。,service()方法,该方法是Servlet的核心,由Servlet容器调用. 被调用时将传递给该方法一个”请求”对象(ServletRequest)和一个”响应”对象(ServletResponse)作为参数. ServletRequest对象包含客户端HTTP请求信息 ServletResponse对象则封装Servlet响应 service() 方法可调 doGet()、doPost()或其它的方法来处理请求。,Servlet工作流程,客户端(浏览器)向Web服务器发送一个基于HTTP协议的请求. Web服务器接收到该请求,并将请求交给Servlet容器处理. Servlet容器根据Servlet配置来查找或创建Servlet实例,并执
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园学生欺凌事件突发应急处置预案
- 传感器数据加密区块链技术-洞察及研究
- 性能评估标准化方法-洞察及研究
- 2025年北京市二手车买卖合同范本参考
- 出口仁老师课件
- 出入境管理大队课件
- 2025标准版销售合同范本范文
- 冲压安全培训事项课件
- 2025合同样本:网络直播合作协议简版范本
- 冰柜测温安全培训课件
- 人教版八年级物理上册《第四章光现象》单元测试卷(带答案)
- 学校购买文具用品的供货合同2025年
- 物业保安各岗位培训
- iso28000-2022供应链安全管理手册程序文件表单一整套
- 小学二年级下安全课件
- T-CSEA 25-2022 批量热浸镀锌行业含锌固废资源化利用技术规范
- 继发性肥胖症的临床特征
- DB21∕T 3149-2019 玉米秸秆还田机械化作业技术规程
- 报价函(工程项目招标文件资料)
- 2024年中级通信专业实务(终端与业务)考试题库大全(含答案)
- 中小学幼儿园食堂食品安全培训课件
评论
0/150
提交评论