书签 分享 收藏 举报 版权申诉 / 62
上传文档赚钱

类型Java-Web程序设计与案例教程-第2章-Servlet编程.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3372366
  • 上传时间:2022-08-24
  • 格式:PPT
  • 页数:62
  • 大小:1.90MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Java-Web程序设计与案例教程-第2章-Servlet编程.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Java Web 程序设计 案例 教程 Servlet 编程
    资源描述:

    1、第2章 Servlet编程本章内容o 创建Servleto web.xml配置文件o Servlet获取请求参数o Servlet实现登录功能o 请求参数为空的问题o 复选框提交参数o GET请求与POST请求本章内容o 中文乱码问题o Servlet跳转o Servlet生命周期o ServletContexto ServletConfig2.1 创建Servleo Servlet是Java Web应用中的核心组件,也是学习Java Web开发的重点与难点。掌握Servlet是进行Java Web开发的基础,如果没有充分理解Servlet及其相关知识,将无法写出高效的Java Web应用程序

    2、。2.1 创建Servle1)新建Web Project项目 2.1 创建Servle2)输入项目名称 2.1 创建Servle3)Web Project项目结构 2.1 创建Servle4)新建Servlet 2.1 创建Servle5)Create a new Servlet对话框 2.1 创建Servle6)Create a new Servlet对话框 2.1 创建Servle7)MyEclipse生成的Servlet代码 2.1 创建Servle8)MyServlet类中的方法 2.1 创建Servle定义一个最简单的Servlet 1 public void doGet(HttpS

    3、ervletRequest request,HttpServletResponse response)2 throws ServletException,IOException 3 PrintWriter out=response.getWriter();4 out.println(Hello Servlet!);5 out.close();6 2.1 创建Servle9)发布项目servlet_first 2.1 创建Servle10)Project Deployments对话框 2.1 创建Servle11)New Deployments对话框 2.1 创建Servle12)选择Tomca

    4、t服务器 2.1 创建Servle13)设置后的发布对话框 2.1 创建Servle14)启动Tomcat服务器 2.1 创建Servle访问Servleto http:/localhost:8080/servlet_first/servlet/MyServlet2.1 创建Servle15)MyServlet的运行结果 2.2 web.xml配置文件o 通过MyEclipse创建Servlet,除了生成与Servlet相关的Java代码文件,还会在项目目录WebRoot/WEB-INF下的web.xml文件中添加该Servlet的配置信息。o 开发Java Web除了要编写Java代码,还要

    5、维护相应的XML配置文件,这些XML配置文件是保障Java Web应用正确运行的前提,也是学习Java Web开发时的重点和难点。2.2 web.xml配置文件o 对于学习Servlet的初学者而言,所犯的常见错误大都出现在web.xml配置文件中。o 虽然可以借助MyEclipse在web.xml中生成配置,但也要学会手工修改web.xml文件,因为熟练配置web.xml是学会Java Web开发的标志之一。2.2 web.xml配置文件1 2 MyServlet3 servlet.MyServlet4 5 6 MyServlet7 /servlet/MyServlet8 2.2 web.x

    6、ml配置文件2.3 Servlet获取请求参数o 通过URL向服务器提交参数http:/localhost:8080/servlet_first/servlet/MyServlet?username=zhanghttp:/localhost:8080/servlet_first/servlet/MyServlet?username=zhang&password=123452.3 Servlet获取请求参数o 在doGet()方法中可借助request来获取请求参数n public String getParameter(String name)o getParameter()方法根据请求参数名

    7、返回请求参数值,方法的参数name指定了欲获取的参数名,而返回值即为对应的参数值2.3 Servlet获取请求参数1 public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 2 String username=request.getParameter(username);3 PrintWriter out=response.getWriter();4 out.println(username=+username);5 out.clo

    8、se();6 2.4 Servlet实现登录功能o LoginServlet类的doGet()方法的核心代码 String username=request.getParameter(username);String password=request.getParameter(password);PrintWriter out=response.getWriter();if(username.equals(zhang)&password.equals(12345)out.println(Login Success!);else out.println(Login Error!);out.pri

    9、ntln(username=+username);out.println(password=+password);out.close();2.4 Servlet实现登录功能o 访问该Servlet的URL http:/localhost:8080/servlet_first/servlet/LoginServlet?username=zhang&password=12345 2.4 Servlet实现登录功能o 登录页面login.html 2.4 Servlet实现登录功能o 登录页面login.html核心代码 Username:Password:2.5 请求参数为空的问题o Web应用面

    10、对着各式各样的用户。用户常会有意或无意地输入非法参数,如果Web应用处理不当,就会引起异常及安全问题。因此需要处理最为常见的参数为空的问题。n 参数值为nulln 参数值为2.5 请求参数为空的问题o 以下两种URL访问LoginServlet,则会在浏览器页面和Tomcat控制台同时触发空指针异常NullPointerExceptionn http:/localhost:8080/servlet_first/servlet/LoginServletn http:/localhost:8080/servlet_first/servlet/LoginServlet?Username=zhang&

    11、password=123452.5 请求参数为空的问题 2.5 请求参数为空的问题o 第1个URL中未指定username的参数值,第2个URL中指定了错误的username参数值(即“Username”中的首字母U不应该大写),这两者都会造成username的值为null,所以username.equals(“zhang”)语句就触发了“NullPointerException”。o 为了使程序更健壮,就需要加入对参数值是否为null的判断。2.5 请求参数为空的问题o 参数值为”o 以下URL访问LoginServlet,输出结果是什么?n http:/localhost:8080/ser

    12、vlet_first/servlet/LoginServlet?username=&password=2.5 请求参数为空的问题 if(username=null|username.equals()out.println(username=+username);out.close();return;if(password=null|password.equals()out.println(password=+password);out.close();return;2.6 复选框提交参数o 在HTML页面中,文本框、单选按钮等组件所表示的请求参数都是单个值,而复选框、列表框等组件所表示的请求参

    13、数则是数组类型。2.6 复选框提交参数 Basketball:Volleyball:Footall:2.6 复选框提交参数o 因为3个复选框表达的是同一组请求参数,所以它们的name属性都是一样的(即都是“balls”),此时请求参数balls的值就是数组类型的。o HttpServletRequest下的getParameter()方法只能处理单个值,因此为了接收数组类型的参数,就需要调用HttpServletRequest下的getParameterValues()方法。n String getParameterValues(String name)2.6 复选框提交参数 String b

    14、alls=request.getParameterValues(balls);PrintWriter out=response.getWriter();if(balls=null)/没有选择3个复选框中的任何一个,则balls为null out.println(balls=null);out.close();return;for(String ball:balls)out.println(balls=+ball);out.close();2.7 GET请求与POST请求o 构建一个Servlet的关键就是继承HttpServlet类并重写其中的doGet()和doPost()方法。o GET方

    15、式会将请求参数显示在浏览器地址栏中,而POST方式则不会。这是因为GET方式的请求参数是放在HTTP请求报文的报头,而POST方式的请求参数是放在HTTP请求报文的正文。o 如果请求参数中携带有安全性、敏感性信息(如密码),则应该使用POST方式;而GET方式十分便于调试程序。2.7 GET请求与POST请求o 值为post时,其以POST方式提交,Servlet会调用doPost()方法来处理请求。o 值为get或者属性未设置时(如login.html中的标签),则以GET方式提交,Servlet会调用doGet()方法来处理请求。Username:Password:2.7 GET请求与PO

    16、ST请求o 单击“提交”按钮后,两种方式在浏览器地址栏中生成的URL也不同o GET方式:n http:/localhost:8080/servlet_first/servlet/LoginServlet?username=zhang&password=12345o POST方式:n http:/localhost:8080/servlet_first/servlet/LoginServlet2.8 中文乱码问题o Servlet输出乱码o out.println(登录成功!)o 在PrintWriter out=response.getWriter()语句之前加入代码n response.s

    17、etCharacterEncoding(gbk);2.8 中文乱码问题o POST参数乱码o 在username文本框中输入中文字符“张三”o 在String username=request.getParameter(username)语句之前加入代码n request.setCharacterEncoding(gbk);2.8 中文乱码问题o GET参数乱码ohttp:/localhost:8080/servlet_first/servlet/LoginServlet?username=张三&password=12345”o除在引用request对象前要加入request.setChara

    18、cterEncoding(gbk);还需在Tomcat服务器的conf目录下server.xml文件的标签中增加useBodyEncodingForURI属性,并设置其值为true 2.9 Servlet跳转o 对于比较复杂的业务功能,经常需要多个Servlet配合实现,这时就需要从一个Servlet跳转到另外一个Servlet,Servlet间的跳转方式可分为转发(forward)和重定向(redirect)两种2.9 Servlet跳转Servlet间的转发o 通过使用HttpServletRequest的getRequestDispatcher()方法可获取RequestDispatch

    19、er对象n RequestDispatcher getRequestDispatcher(String path)o getRequestDispatcher()方法的参数path指明了要转发到的目标Servlet的URL路径,其返回值为RequestDispatcher类型的对象。2.9 Servlet跳转Servlet间的转发o getRequestDispatcher()方法只是获取了RequestDispatcher对象,并未执行真正的转发,执行转发操作还需要调用RequestDispatcher的forward()方法n void forward(ServletRequest req

    20、uest,ServletResponse response)o forward()方法的声明与doGet()方法和doPost()方法类似,在转发时,其将request和response作为参数传递到下一个Servlet,以便其做进一步的处理。2.9 Servlet跳转转发时传递对象o Servlet转发时传递对象需要利用HttpServletRequest对象来传递数据,需调用的HttpServletRequest的方法的声明如下:n void setAttribute(String name,Object object)n Object getAttribute(String name)。

    21、2.9 Servlet跳转转发时传递对象o 方法setAttribute()的参数name指定了放入request的对象的“名字”,此处name的类型是String,用户可任意命名,但要注意将来要按同样名字来取对象;参数object则为真正要放入的需被传递的对象。n request.setAttribute(u,username);o 方法getAttribute()按参数name指定的“名字”,到request中取出之前由方法setAttribute()放入的对象。n String username=(String)request.getAttribute(u);2.9 Servlet跳转转

    22、发时传递对象o在使用forward()方法执行转发时,该方法把request作为参数传递到了下一个Servlet,因为转发前后的两个Servlet引用的是同一个request对象,所以就可借助request来传递数据。2.9 Servlet跳转重定向o Servlet之间的重定向是通过javax.servlet.http.HttpServletResponse对象的sendRedirect()方法实现n public void sendRedirect(String location)throws IOExceptiono 重定向时传递参数n response.sendRedirect(pat

    23、h+?username=+username+&password=+password);2.9 Servlet跳转转发与重定向o 转发与重定向之间最重要的区别在于Servlet跳转中浏览器所发出的请求次数。o 在Servlet的跳转过程中,无论Servlet出现了多少次的转发,浏览器仅仅只发送了一次HTTP请求,只接收到最后一个Servlet传回的响应。o 重定向在跳转至另一个Servlet之前,必须先对浏览器传回响应,浏览器会根据响应报文中的重定向路径发出一个全新的请求以接受重新的处理,所以重定向过程一共需要发出两次HTTP请求。2.9 Servlet跳转转发与重定向o 由于在转发之后,浏览器

    24、中URL仍然指向初始页面,此时如果刷新浏览器,初始页面将会被再次调用。如果不想这样的情况发生(如付款或转账页面),可选择重定向。o 转发只能在一个Web项目内的资源之间跳转。重定向可跳转至当前Web项目以外的其他资源。2.10 Servlet生命周期o Servlet的生命周期指的是一个Servlet对象何时被创建、何时被访问、何时被销毁。o 一个Servlet对象在首次被访问时创建;之后不管用户多少次访问该Servlet,调用的仍是同一对象,即Servlet在Web应用中是单例的。o 一个Servlet对象被创建后,直到项目重新发布或Tomcat服务器停机,该对象才会被销毁。2.11 Ser

    25、vletContexto 接口ServletContext位于javax.servlet包下,其封装了一个Web应用运行时的上下文,也就是Web应用运行时所涉及的环境信息。o 一个Web应用程序(即MyEclipse下的一个Web项目)下仅有一个ServletContext对象,因此通过ServletContext可实现跨用户的数据共享,具体需调用的ServletContext方法如下,其与HttpServletContext的属性方法的声明完全一致。n void setAttribute(String name,Object object)n Object getAttribute(Stri

    26、ng name)2.12 ServletConfigo ServletConfig接口位于javax.servlet包下,其封装了Servlet在web.xml文件中的配置信息o 每个Servlet对象都有一个仅属于自己的ServletConfig对象。o 调用ServletConfig的getInitParameter()方法可读取到web.xml配置文件中标签中的用户自定义参数n String getInitParameter(String name)小结o Servlet是学习Java Web开发的重点与难点,这里的Servlet不仅指HttpServlet,还包括HttpServletRequest、HttpServletResponse、RequestDispatcher、ServletContext与ServletConfig等,除了要掌握这些接口的常用方法外,还要熟悉它们之间的继承及引用关系,这对理解与掌握Servlet也是非常重要的。小结ServletHttpServletServletRequestServletResponseGenericServletRequestDispatcherServletConfigServletContextHttpServletRequestHttpServletResponse

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Java-Web程序设计与案例教程-第2章-Servlet编程.ppt
    链接地址:https://www.163wenku.com/p-3372366.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库