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

PPT
  • 阅读 63 次
  • 下载 0 次
  • 页数 62 页
  • 大小 1.899 MB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
Java-Web程序设计与案例教程-第2章-Servlet编程
可在后台配置第一页与第二页中间广告代码
Java-Web程序设计与案例教程-第2章-Servlet编程
可在后台配置第二页与第三页中间广告代码
Java-Web程序设计与案例教程-第2章-Servlet编程
可在后台配置第三页与第四页中间广告代码
Java-Web程序设计与案例教程-第2章-Servlet编程
Java-Web程序设计与案例教程-第2章-Servlet编程
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 62
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】Java-Web程序设计与案例教程-第2章-Servlet编程.ppt,共(62)页,1.899 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2274.html

以下为本文档部分文字说明:

第2章Servlet编程本章内容创建Servletweb.xml配置文件Servlet获取请求参数Servlet实现登录功能请求参数为空的问题复选框提交参数GET请求与POST请求本章内容中文乱码问题Servlet跳转Servlet生命周期Se

rvletContextServletConfig2.1创建ServleServlet是JavaWeb应用中的核心组件,也是学习JavaWeb开发的重点与难点。掌握Servlet是进行JavaWeb开发的基础,

如果没有充分理解Servlet及其相关知识,将无法写出高效的JavaWeb应用程序。2.1创建Servle1)新建WebProject项目�2.1创建Servle2)输入项目名称�2.1创建Servle3)We

bProject项目结构�2.1创建Servle4)新建Servlet�2.1创建Servle5)CreateanewServlet对话框�2.1创建Servle6)CreateanewServlet对话框�2.1创建Servle7)

MyEclipse生成的Servlet代码�2.1创建Servle8)MyServlet类中的方法�2.1创建Servle定义一个最简单的Servlet1publicvoiddoGet(HttpServle

tRequestrequest,HttpServletResponseresponse)2throwsServletException,IOException{3PrintWriterout=response.getWriter();4out.println("HelloServlet!

");5out.close();6}2.1创建Servle9)发布项目servlet_first�2.1创建Servle10)ProjectDeployments对话框�2.1创建Servle11)NewDeployments对话框�2.1创建Servle12)选择Tomca

t服务器�2.1创建Servle13)设置后的发布对话框�2.1创建Servle14)启动Tomcat服务器�2.1创建Servle访问Servlethttp://localhost:8080/servlet_first/servlet/MyServlet2

.1创建Servle15)MyServlet的运行结果�2.2web.xml配置文件通过MyEclipse创建Servlet,除了生成与Servlet相关的Java代码文件,还会在项目目录WebRoot/WEB-INF下的web.xml文件中添加该Servlet的配置信息。开发Ja

vaWeb除了要编写Java代码,还要维护相应的XML配置文件,这些XML配置文件是保障JavaWeb应用正确运行的前提,也是学习JavaWeb开发时的重点和难点。2.2web.xml配置文件对于学习Servl

et的初学者而言,所犯的常见错误大都出现在web.xml配置文件中。虽然可以借助MyEclipse在web.xml中生成配置,但也要学会手工修改web.xml文件,因为熟练配置web.xml是学会JavaWeb开发的标志之一。2.2web.xml配置文件1<s

ervlet>2<servlet-name>MyServlet</servlet-name>3<servlet-class>servlet.MyServlet</servlet-class>4</servlet>5<servlet-mapping>6<servl

et-name>MyServlet</servlet-name>7<url-pattern>/servlet/MyServlet</url-pattern>8</servlet-mapping>2.2web.xml配置文件2.3Servlet获取请求参数通过URL向

服务器提交参数http://localhost:8080/servlet_first/servlet/MyServlet?username=zhanghttp://localhost:8080/servlet_

first/servlet/MyServlet?username=zhang&password=123452.3Servlet获取请求参数在doGet()方法中可借助request来获取请求参数◼publicStrin

ggetParameter(Stringname)getParameter()方法根据请求参数名返回请求参数值,方法的参数name指定了欲获取的参数名,而返回值即为对应的参数值2.3Servlet获取请求参数1publicvoiddoGet(Htt

pServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{2Stringusername=request.getParameter("username");3Pri

ntWriterout=response.getWriter();4out.println("username="+username);5out.close();6}�2.4Servlet实现登录功能LoginServlet类的doGet()方法的核心代码Stringu

sername=request.getParameter("username");Stringpassword=request.getParameter("password");PrintWriterout=response.getWriter();if(username.equals("z

hang")&&password.equals("12345")){out.println("LoginSuccess!");}else{out.println("LoginError!");}out.println("username="+username);o

ut.println("password="+password);out.close();2.4Servlet实现登录功能访问该Servlet的URLhttp://localhost:8080/servlet_first/

servlet/LoginServlet?username=zhang&password=12345��2.4Servlet实现登录功能登录页面login.html�2.4Servlet实现登录功能登录页面login.html核心代码<formaction="servlet/LoginSer

vlet">Username:<inputtype="text"name="username"><br>Password:<inputtype="text"name="password"><br><inputtype="submit"name="Submit"><br></

form>2.5请求参数为空的问题Web应用面对着各式各样的用户。用户常会有意或无意地输入非法参数,如果Web应用处理不当,就会引起异常及安全问题。因此需要处理最为常见的参数为空的问题。◼参数值为null◼参数值为""2.5

请求参数为空的问题以下两种URL访问LoginServlet,则会在浏览器页面和Tomcat控制台同时触发空指针异常NullPointerException◼http://localhost:8080/servlet_first/servlet/LoginServlet◼

http://localhost:8080/servlet_first/servlet/LoginServlet?Username=zhang&password=123452.5请求参数为空的问题��2.5请求参数为空的问题第1个URL中未指定username的参数值,第

2个URL中指定了错误的username参数值(即“Username”中的首字母U不应该大写),这两者都会造成username的值为null,所以username.equals(“zhang”)语句就触发了“Null

PointerException”。为了使程序更健壮,就需要加入对参数值是否为null的判断。2.5请求参数为空的问题参数值为””以下URL访问LoginServlet,输出结果是什么?◼http://localhost:8080/servlet_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复选框提交参数在HTM

L页面中,文本框、单选按钮等组件所表示的请求参数都是单个值,而复选框、列表框等组件所表示的请求参数则是数组类型。�2.6复选框提交参数<formaction="servlet/CheckboxServlet">Basketball:<inputtype="checkbox"name="ball

s"value="basketball"><br>Volleyball:<inputtype="checkbox"name="balls"value="volleyball"><br>Footall:<inputtype="checkbox"name="balls"value="

football"><br><inputtype="submit"name="Submit"><br></form>2.6复选框提交参数因为3个复选框表达的是同一组请求参数,所以它们的name属性都是一样的(即都是“balls”),此时请求参数b

alls的值就是数组类型的。HttpServletRequest下的getParameter()方法只能处理单个值,因此为了接收数组类型的参数,就需要调用HttpServletRequest下的getParameterValues()方法。◼String[]getPar

ameterValues(Stringname)2.6复选框提交参数String[]balls=request.getParameterValues("balls");PrintWriterout=response.getWriter();if(balls==nul

l){//没有选择3个复选框中的任何一个,则balls为nullout.println("balls=null");out.close();return;}for(Stringball:balls){out.println("balls="+bal

l);}out.close();2.7GET请求与POST请求构建一个Servlet的关键就是继承HttpServlet类并重写其中的doGet()和doPost()方法。GET方式会将请求参数显示在浏览器地址栏中,而POST方式则不会。这是因为GET方

式的请求参数是放在HTTP请求报文的报头,而POST方式的请求参数是放在HTTP请求报文的正文。如果请求参数中携带有安全性、敏感性信息(如密码),则应该使用POST方式;而GET方式十分便于调试程序。2.7GET请求与POST请求值为post时

,其以POST方式提交,Servlet会调用doPost()方法来处理请求。值为get或者属性未设置时(如login.html中的<form>标签),则以GET方式提交,Servlet会调用doGet()方法来处理请求。<formaction="servlet/Log

inServlet"method="post">Username:<inputtype=“text”name="username"><br>Password:<inputtype="text"name="password"><br><inputtype="sub

mit"name="Submit"><br></form>2.7GET请求与POST请求单击“提交”按钮后,两种方式在浏览器地址栏中生成的URL也不同GET方式:◼http://localhost:8080/servlet_fi

rst/servlet/LoginServlet?username=zhang&password=12345POST方式:◼http://localhost:8080/servlet_first/servlet/LoginServlet2.8中文乱码问题

Servlet输出乱码out.println("登录成功!")在PrintWriterout=response.getWriter()语句之前加入代码◼response.setCharacterEncoding("gbk");�2.8中文乱码问题POST参数乱码在userna

me文本框中输入中文字符“张三”在Stringusername=request.getParameter("username")语句之前加入代码◼request.setCharacterEncoding("gbk");�2.8中文乱码问题GET参数乱码http://l

ocalhost:8080/servlet_first/servlet/LoginServlet?username=张三&password=12345”除在引用request对象前要加入request.setCharacterEncoding("gbk");还需在Tomcat服务

器的conf目录下server.xml文件的<Connector>标签中增加useBodyEncodingForURI属性,并设置其值为true�2.9Servlet跳转对于比较复杂的业务功能,经常需要多个Servlet配合实现,这时就需要从一个Servlet跳转到另外一个Servl

et,Servlet间的跳转方式可分为转发(forward)和重定向(redirect)两种2.9Servlet跳转Servlet间的转发通过使用HttpServletRequest的getRequestDispatcher()方法可获取RequestDispatcher对象◼Reque

stDispatchergetRequestDispatcher(Stringpath)getRequestDispatcher()方法的参数path指明了要转发到的目标Servlet的URL路径,其返回值为RequestDispatcher类型

的对象。2.9Servlet跳转Servlet间的转发getRequestDispatcher()方法只是获取了RequestDispatcher对象,并未执行真正的转发,执行转发操作还需要调用RequestDispatcher的forward()方法◼voidforward

(ServletRequestrequest,ServletResponseresponse)forward()方法的声明与doGet()方法和doPost()方法类似,在转发时,其将request和respons

e作为参数传递到下一个Servlet,以便其做进一步的处理。2.9Servlet跳转转发时传递对象Servlet转发时传递对象需要利用HttpServletRequest对象来传递数据,需调用的HttpServletRequest的方法的声明如下:◼voidsetAttribute(St

ringname,Objectobject)◼ObjectgetAttribute(Stringname)。2.9Servlet跳转转发时传递对象方法setAttribute()的参数name指定了放入request的对象的“名字”,此处name的类型是String,用户可任意命名

,但要注意将来要按同样名字来取对象;参数object则为真正要放入的需被传递的对象。◼request.setAttribute("u",username);方法getAttribute()按参数name指定的“名字”

,到request中取出之前由方法setAttribute()放入的对象。◼Stringusername=(String)request.getAttribute("u");2.9Servlet跳转转发时传递对象在使用forward()方法执行转发时,该方法把request作为参数传递到

了下一个Servlet,因为转发前后的两个Servlet引用的是同一个request对象,所以就可借助request来传递数据。2.9Servlet跳转重定向Servlet之间的重定向是通过javax.servlet.h

ttp.HttpServletResponse对象的sendRedirect()方法实现◼publicvoidsendRedirect(Stringlocation)throwsIOException重定向时传递参数◼response.sendRedirect(p

ath+"?username="+username+"&password="+password);2.9Servlet跳转转发与重定向转发与重定向之间最重要的区别在于Servlet跳转中浏览器所发出的请求次数。在Servlet的跳转过程中,无论

Servlet出现了多少次的转发,浏览器仅仅只发送了一次HTTP请求,只接收到最后一个Servlet传回的响应。重定向在跳转至另一个Servlet之前,必须先对浏览器传回响应,浏览器会根据响应报文中的重定向路径发出一个全新的请求以接受重新的处理,所以重定向过程一共需要发出两次HTTP请求。2

.9Servlet跳转转发与重定向由于在转发之后,浏览器中URL仍然指向初始页面,此时如果刷新浏览器,初始页面将会被再次调用。如果不想这样的情况发生(如付款或转账页面),可选择重定向。转发只能在一个Web项目内的资源之间跳转。重定向可跳转至当前Web项目

以外的其他资源。2.10Servlet生命周期Servlet的生命周期指的是一个Servlet对象何时被创建、何时被访问、何时被销毁。一个Servlet对象在首次被访问时创建;之后不管用户多少次访问该Servlet,调用的仍是同一对

象,即Servlet在Web应用中是单例的。一个Servlet对象被创建后,直到项目重新发布或Tomcat服务器停机,该对象才会被销毁。2.11ServletContext接口ServletContext位于javax.servlet包下,其封装了一个Web应

用运行时的上下文,也就是Web应用运行时所涉及的环境信息。一个Web应用程序(即MyEclipse下的一个Web项目)下仅有一个ServletContext对象,因此通过ServletContext可实现跨用户的数据共享,具体需调用的Se

rvletContext方法如下,其与HttpServletContext的属性方法的声明完全一致。◼voidsetAttribute(Stringname,Objectobject)◼ObjectgetAttribute(Stringname)2.1

2ServletConfigServletConfig接口位于javax.servlet包下,其封装了Servlet在web.xml文件中的配置信息每个Servlet对象都有一个仅属于自己的ServletConfig对象。调用ServletConfig的getInitParamet

er()方法可读取到web.xml配置文件中<init-param>标签中的用户自定义参数◼StringgetInitParameter(Stringname)小结Servlet是学习JavaWeb开发的重点与难点,这里的Servlet不仅指HttpServlet,还包括Http

ServletRequest、HttpServletResponse、RequestDispatcher、ServletContext与ServletConfig等,除了要掌握这些接口的常用方法外,还要熟悉它们之间的继承及引用关系,这对理解与掌握Servle

t也是非常重要的。小结Servlet<<interface>>HttpServletServletRequest<<interface>>ServletResponse<<interface>>GenericServletRequestDispatcher<<interface>>Servle

tConfig<<interface>>ServletContext<<interface>>HttpServletRequest<<interface>>HttpServletResponse<<interface>>

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?