使用jspservlet技术开发新闻发布系统_第1页
使用jspservlet技术开发新闻发布系统_第2页
使用jspservlet技术开发新闻发布系统_第3页
使用jspservlet技术开发新闻发布系统_第4页
使用jspservlet技术开发新闻发布系统_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章Servlet基础预习检查简述Servlet与JSP的关系简述Servlet的主要方法及其作用Servlet的生命周期包括哪几个环节?写出在web.xml中配置Servlet的主要元素集中测试2/43回顾与作业点评分页功能实现的基本流程是什么?文件上传的表单应如何设置?简述使用Commons-Fileupload处理文件上传的流程点评作业的提交情况和共性问题回顾作业点评3/43本章任务使用Servlet实现用户登录在Servlet中获取初始化参数在Servlet中获取系统上下文参数使用Servlet修改新闻主题操作4/43本章目标了解ServletAPI的常用接口和类掌握Servlet的部署和配置会使用Servlet处理用户请求掌握Servlet的生命周期5/43什么是Servlet2-1Servlet是在服务器端运行的Java程序,可以接收客户端请求并做出响应请求

响应Servlet运行于服务器端6/43什么是Servlet2-2Servlet可以动态生成HTML内容对客户端进行响应请求响应Java代码HTML代码生成运行Servlet程序7/43Servlet与JSP的关系客户端应用服务器2编译JSP.class3执行请求响应1翻译.java演示:Servlet与JSP的关系问题Servlet与JSP都可以动态生成HTML内容,二者之间是否存在什么联系?8/43importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassHelloServletTestextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{ response.setContentType("text/html;charset=UTF-8"); PrintWriterout=response.getWriter(); out.println("<html>"); out.println("<head><title>Servlet</title></head>"); out.println("<body>"); out.println("你好,欢迎来到Servlet世界"); out.println("</body>"); out.println("</html>"); out.close();}}初识Servlet继承javax.servlet.http.HttpServlet类Servlet输出HTML标签和内容9/43Servlet体系结构接口HttpServletGenericServlet1抽象类2ServletConfigServlet10/43Servlet接口定义了所有Servlet需要实现的方法方法名称功能描述voidinit(ServletConfigconfig)由Servlet容器调用,用于完成Servlet对象在处理客户请求前的初始化工作voidservice(ServletRequest

req,

ServletResponse

res)由

Servlet容器调用,用来处理客户端的请求voiddestroy()由

Servlet容器调用,释放Servlet对象所使用的资源ServletConfiggetServletConfig()返回ServletConfig对象,该对象包含此Servlet的初始化和启动参数。返回的ServletConfig对象是传递给init()方法的对象StringgetServletInfo()返回有关

Servlet的信息,比如作者、版本和版权。返回的字符串是纯文本,而不是任何种类的标记(如HTML、XML等)11/43GenericServlet抽象类提供了Servlet与ServletConfig接口方法的默认实现(service()方法除外)方法名称功能描述publicvoidinit(ServletConfigconfig)对Servlet接口中init()方法的实现,对ServletConfig实例进行了保存。此方法还有一个无参的重载方法,可用于子类中重写publicStringgetInitParameter(Stringname)返回web.xml中名称为name的初始化参数的值publicServletContextgetServletContext()返回ServletContext对象的引用12/43HttpServlet抽象类继承自GenericServlet处理HTTP协议的请求和响应方法名称功能描述publicvoidservice(ServletRequestreq,ServletResponseres)对GenericServlet类中service()方法的实现,将请求分发给protectedvoidservice(HttpServletRequestreq,HttpServletResponseres)protected

voidservice(HttpServletRequestreq,HttpServletResponseres)接收HTTP请求,并将它们分发给此类中定义的doXXX()方法protectedvoiddoXXX(HttpServletRequestreq,HttpServletResponseres)根据请求方式的不同分别调用的相应处理方法,如doGet()、doPost()等13/43ServletConfig接口在Servlet初始化过程中获取配置信息一个Servlet只有一个ServletConfig对象方法名称功能描述StringgetInitParameter(Stringname)获取web.xml中设置的以name命名的初始化参数值ServletContextgetServletContext(

)返回Servlet的上下文对象引用14/43ServletContext接口获取Web应用上下文,与Servlet容器进行通信方法名称功能描述StringgetInitParameter(Stringname)获取名为name的系统范围的初始化参数值,系统范围的初始化参数可在部署描述符中使用<context-param>元素定义voidsetAttribute(Stringname,Objectobject)设置名称为name的属性ObjectgetAttribute(Stringname)获取名称为name的属性StringgetRealPath(

String

path)返回参数所代表目录的真实路径voidlog(Stringmessage)记录一般日志信息15/43请求、响应相关接口ServletRequestHttpServletRequestServletResponseHttpServletResponse请求响应16/43ServletRequest接口获取客户端请求的数据方法名称功能描述ObjectgetAttribute(Stringname)获取名称为name的属性值voidsetAttribute(String

name,Object

object)在请求中保存名称为name的属性voidremoveAttribute(String

name)清除请求中名字为name的属性StringgetCharacterEncoding()返回请求体所使用的字符编码voidsetCharacterEncoding(Stringcharset)设置请求体的字符编码StringgetParameter(Stringname)返回指定请求参数的值String[]getParameterValues(Stringname)返回指定请求参数的全部值RequestDispatchergetRequestDispatcher(Stringpath)返回指向指定路径的请求分发对象17/43HttpServletRequest接口除了继承ServletRequest接口中的方法,还增加了一些用于读取HTTP请求信息的方法方法名称功能描述StringgetContextPath()返回请求URI中表示请求上下文的路径,上下文路径是请求URI的开始部分Cookie[]getCookies()返回客户端在此次请求中发送的所有cookie对象HttpSession

getSession()返回和此次请求相关联的session,如果没有给客户端分配session,则创建一个新的sessionStringgetMethod()返回此次请求所使用的HTTP方法的名字,如GET、POSTStringgetHeader(Stringname)返回指定的请求头信息18/43ServletResponse接口设置响应参数和向客户端发送响应数据方法名称功能描述PrintWritergetWriter()返回PrintWriter对象,用于向客户端发送文本StringgetCharacterEncoding()返回在响应中发送的正文所使用的字符编码voidsetCharacterEncoding(Stringcharset)设置响应的字符编码voidsetContentType(Stringtype)设置发送到客户端的响应的内容类型,此时响应的状态属于尚未提交19/43HttpServletResponse接口除了继承ServletResponse接口中的方法,还增加了适用于HTTP响应的新方法方法名称功能描述voidaddCookie(Cookiecookie)增加一个cookie到响应中,这个方法可多次调用,设置多个cookievoidaddHeader(Stringname,Stringvalue)将一个名称为name,值为value的响应报头添加到响应中voidsendRedirect(Stringlocation)发送一个临时的重定向响应到客户端,以便客户端访问新的URLvoidencodeURL(Stringurl)使用sessionID对用于重定向的URL进行编码20/43Servlet的应用创建Servlet继承HttpServlet重写doPost()或doGet()方法部署Servlet编译Servlet到/WEB-INF/classes目录编辑部署描述文件web.xml<servlet><servlet-mapping><url-pattern>启动Tomcat,访问Servlet演示示例1:HelloServlet21/43学员操作—实现用户登录2-1训练要点编写Servlet配置Servlet,实现Servlet的编译和部署需求说明编写Servlet,验证用户登录如果用户名与密码都为“admin”则验证通过,跳转欢迎页面否则弹出提示信息“用户名或密码错误,请重新输入!”,点击“确定”后跳转至登录页面指导讲解需求说明22/43学员操作—实现用户登录2-2实现思路继承HttpServlet编写Servlet配置web.xml启动Tomcat,访问Servlet指导完成时间:20分钟23/43共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解24/43使用Servlet实现控制器2-1修改控制器主题控制页显示主题更新主题添加主题JSPServlet25/43使用Servlet实现控制器2-2publicclassTopicServletextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponse response)throwsServletException,IOException{ ......

Stringopr=request.getParameter("opr"); TopicsServicetopicsService=newTopicsServiceImpl();

StringcontextPath=request.getContextPath(); if(opr.equals("list")){//查找所有主题

List<Topic>list=topicsService.getAllTopics(); request.setAttribute("list",list);

request.getRequestDispatcher(contextPath+"/newspages/topic_list.jsp")

.forward(request,response); }

……

}}<divid="opt_list"><ul><li><ahref="../util/news_control.jsp?opr=findTopics">添加新闻</a></li><li><ahref="../util/news_control.jsp?opr=list">编辑新闻</a></li><li><ahref="../newspages/topic_add.jsp">添加主题</a></li>

<li><ahref="../util/topics?opr=list">编辑主题</a></li></ul></div>演示示例2:使用Servlet实现控制器26/43学员操作—修改新闻主题操作需求说明创建一个Servlet作为控制器,修改新闻主题操作练习完成时间:20分钟27/43共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解28/43Servlet的生命周期2-1生命周期的各个阶段实例化Servlet容器创建Servlet的实例初始化该容器调用init

(ServletConfig)方法服务如果请求Servlet,则容器调用service()方法销毁实例之前调用destroy()方法销毁29/43Servlet的生命周期2-2Servlet的生命周期HTTP请求容器12解析请求345响应6创建Servlet实例调用init()方法Servlet调用service()方法调用destroy()方法输出响应信息78演示示例3:Servlet的生命周期30/43获取Servlet初始化参数2-1Servlet初始化参数配置<web-app><servlet><servlet-name>HelloServlet</servlet-name><servlet-class>demo.servlet.HelloServlet</servlet-class><init-param><param-name>initParam</param-name><param-value>HelloServlet</param-value></init-param></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/HelloServlet</url-pattern></servlet-mapping></web-app>31/43获取Servlet初始化参数2-2获取初始化参数publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{System.out.println("处理请求时,doGet()方法被调用。");StringinitParam=getInitParameter("initParam");System.out.println(initParam);}根据参数名称进行读取

演示示例4:获取Servlet初始化参数32/43学员操作—获取初始化参数需求说明编写Servlet,并设置Servlet初始化参数,然后调用Servlet,在控制台输出显示“欢迎XXX”修改web.xml配置初始化参数,添加<init-param>元素并设定参数名称及参数值编写Servlet,在doGet()方法中获取初始化参数,输出到控制台显示练习提示完成时间:20分钟33/43共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解34/43获取Servlet上下文参数2-1配置Servlet上下文<web-app>

<context-param><param-name>contextParam</param-name><param-value>HelloServlet</param-value></context-param><!--省略其他配置--></web-app>初始化参数的名字初始化参数的值35/43获取Servlet上下文参数2-2读取Servlet上下文publicclassHelloServletextendsHttpServlet{ //…省略其他代码

publicvoiddoGet(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException,IOException{ System.out.println("处理请求时,doGet()方法被调用。"); StringinitParam=getInitParameter("initParam");

StringcontextParam=

this.getServletContext().getInitParameter("contextParam"); System.out.println("Servlet初始化参数"+initParam); System.out.println("系统初始化参数"+contextParam); }}根据参数名称进行读取

演示示例5:获取Servlet上下文参数36/43学员操作—获取系统上下文参数需求说明编写Servlet,并设置系统初始化参数,部署运行输出显示“系统的初始化参数是:ThisisSystem’sparameter”练习完成时间:20分钟37/43共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解38/43总结2-1运行在Servlet容器中的Java类,可以接受请求并产生响应ServletAPI开发Servlet部署和访问JSP本质上是一个Servlet,JS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论