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

上传人(卖家):三亚风情 文档编号:3372366 上传时间:2022-08-24 格式:PPT 页数:62 大小:1.90MB
下载 相关 举报
Java-Web程序设计与案例教程-第2章-Servlet编程.ppt_第1页
第1页 / 共62页
Java-Web程序设计与案例教程-第2章-Servlet编程.ppt_第2页
第2页 / 共62页
Java-Web程序设计与案例教程-第2章-Servlet编程.ppt_第3页
第3页 / 共62页
Java-Web程序设计与案例教程-第2章-Servlet编程.ppt_第4页
第4页 / 共62页
Java-Web程序设计与案例教程-第2章-Servlet编程.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Java-Web程序设计与案例教程-第2章-Servlet编程.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

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


163文库-Www.163Wenku.Com |网站地图|