当前位置:  编程技术>java/j2ee

基于JSP HttpServlet的详细介绍

    来源: 互联网  发布时间:2014-10-18

    本文导语:  HttpServlet先来复习一下上一节提到的类结构图: 可以看到,HttpServlet继承了GenericServlet,不过它也是一个抽象类, 不能直接使用,只能继承它。 HttpServlet中常用的方法有两个: doGetvoid doGet(HttpServletRequest request, HttpServletResponse res...

HttpServlet
先来复习一下上一节提到的类结构图:


可以看到,HttpServlet继承了GenericServlet,不过它也是一个抽象类, 不能直接使用,只能继承它。

HttpServlet中常用的方法有两个:

doGet
void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

当浏览器用GET方式访问时,该方法被调用。

doPost
void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

当浏览器用POST方式访问时,该方法被调用。

这两个函数内部的处理方法基本上与上一节介绍的GenericServlet.service()函数相同。

另外其他的HTTP请求也都有相应的方法:

HTTP请求类别 HttpServlet的方法 GET doGet() POST doPost() HEAD doHead() PUT doPut() DELETE doDelete()
HttpServletRequest

doGet()和doPost()函数的两个参数为HttpServletRequest和HttpServletResponse对象。

HttpServletRequest接口表示浏览器请求,你可以通过这个类获取浏览器发送到服务器的任何信息。 对于PHP程序员来说,这个类有点类似于$_GET、$_POST、$_SERVER 等几个变量的内容。 它的常用方法如下:

getParameter
String getParameter(String name)

获取指定变量名name所对应的参数值。该方法实际上为父接口javax.servlet.ServletRequest的方法。如果是GET请求则获取查询字符串后的参数,POST请求则获取表单中的参数。类似于PHP的$_GET和$_POST数组。

getParameterValues
String[] getParameterValues(String name)

这个方法与getParameter()类似。当你要获取这类会返回多个值的表单属性时,就应当用这个方法。

getMethod
String getMethod()

返回字符串"GET"或"POST"。

getRequestURI
String getRequestURI()

获取请求的URI(不包括查询字符串)。相当于PHP的$_SERVER['REQUEST_URI']。

getServletPath
String getServletPath()

获取Servlet的路径。相当于PHP的$_SERVER['PHP_SELF']。

getPathInfo
String getPathInfo()

获取PathInfo。相当于PHP的$_SERVER['PATH_INFO']。

setCharacterEncoding
void setCharacterEncoding(String new)

设置请求的编码。需要处理汉字时务必要通过该方法设置正确的字符编码,否则将无法正确读取浏览器发过来的文字。

还有好多有用的方法大家可以自己去参考接口文档。

HttpServletResponse

HttpServletResponse接口则用于控制服务器发送给客户端的内容,相当于PHP的echo、header等函数。

setContentType
void setContentType(String type)

设置返回值的类型。通常的HTML内容可设置为"text/html; charset=UTF-8"等,而动态生成的图片则可以设置为"image/gif"等。输出汉字之前,务必要通过该方法指定输出的字符编码。相当于在PHP中写 header("Content-Type: image/gif")。

ServletOutputStream
ServletOutputStream getOutputStream() throws IOException

向客户端发送二进制数据时,需要通过此方法获取输出流。

getWriter
PrintWriter getWriter() throws IOException

向客户端发送文本数据时,需要通过此方法获取输出流。

示例程序

上一节建立Servlet时,我们先生成了Java代码,再将其添加到web.xml的Servlet节中。 实际上可以直接在web.xml的Servlet节中建立Servlet,Eclicpse会自动帮我们生成Java代码。

我们这次将建立一个表单提交程序,通过一个HTML表单提交数据,然后在Servlet中读出数据并显示出来。

首先右键单击WebContent目录,选择New->HTML,新建一个HTML文档,命名为 htmlpost.html。 下一步是选择HTML模板,直接用默认值即可。

然后编辑 htmlpost.html,可参考本节的源代码。源代码下载:

httppost_jb51net.zip

右键单击Deployment Descriptor中的Servlets,选择New->Servlet。

按照下图的样子,在Java package处输入包名 com.idv2.learnjsp,在 Class name处输入类名 HttpPost,单击Next。

出现Servlet映射的配置界面,输入适当的Description。注意下方的 URL Mappings,这个就是从浏览器访问该Servlet时使用的URL。

下一步选择新建的类的属性,通常选择默认即可。 不过我们的Servlet只需要处理POST方法,所以下方的重载列表中只需选择doPost即可。

最后单击Finish,即可完成Servlet的建立,并且Eclipse会自动在Java代码的src目录中生成HttpPost.java文件的框架。

编辑java代码,可以参考下面的源代码下载。

httppost_jb51net.zip

其实这段代码的主要内容就是通过 getParameter 或者 getParameterValues 方法来获取客户端提交的数据。其代码片段如下;

代码如下:

// 字符集 
 request.setCharacterEncoding("UTF-8"); 

 // 从表单中获得数据 
 out.println(" 
  • 用户名: " + request.getParameter("username")); 
     out.println(" 
  • 密码: " + request.getParameter("password")); 
     out.println(" 
  • 确认密码: " + request.getParameter("confpass")); 

     // 获取复选框的表单选项 
     String interests[] = request.getParameterValues("interests"); 
     out.println(" 
  • 兴趣爱好:
    "); 
     if (interests != null) { 
         for (int i = 0; i < interests.length; i++) { 
             out.println(interests[i] + "
    "); 
         } 
     }

  •     
     
     

    您可能感兴趣的文章:

  • 请大家给介绍一本JSP入门的好书,和一本介绍实际开发经验的好书
  • 想学serverlet,可使大多数的书怎么介绍介绍就变成讲jsp的书了?
  • 学JSP,请介绍几本好书
  • 请大家介绍几个好的 JSP 网站,谢!
  • 寻找一个介绍jsp的网站!!!
  • 请前辈介绍一本jsp+数据库的经典好书!!!
  • 介绍一本初学jsp的好书,在线等待,马上去买书!!!
  • 介绍几个好的jsp网站好吗要提供代码和一些入门书记的
  • 能不能给我介绍几本学jsp好书?谢谢!
  • JSP新手,给兄弟俺介绍本好书,好资料
  • 小弟初步接触jsp 哪位大哥给我介绍一个好的编译器.
  • 请问最好用的,用来调试JSP页面的工具是什么?能否介绍一下呀?
  • 请介绍一两本精典的JSP书籍,我要去买了,已有JAVA语言基础!
  • 请教:有没有JSP编程方面的网站,介绍一下
  • 个位大侠,能介绍一点jsp + taglib的东西吗?推荐点书籍文档也行!
  • 谁来介绍一点 JSP 中使用 cookie 的资料?(34分)
  • 那里有关于JSP的函数、方法、属性的介绍(中文版的)?
  • 介绍几个用jsp做的网站.
  • 请介绍一个支持JSP+MySQL的虚拟主机。要求稳定、速度较快。谢谢!
  • JSP中动态include与静态include的区别介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 论坛 iis7站长之家
  • 现有1.jsp、2.jsp、3.jsp三个文件,我怎么在3.jsp文件中得到1.jsp中输入的值?
  • 一个框界网爷包含上下两个网页a1.jsp和a2.jsp,怎么实现a1.jsp自身不变且提交数据到下面的a2.jsp呢?不胜感激,急..
  • 请问jsp和serlet之间怎么通讯,jsp和jsp之间呢?
  • 请问<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别
  • response.sendRedirect("index.jsp") 和 <jsp:forward page="index.jsp"/>的区别?
  • 想把一个jsp转到另一个jsp页面,要穿参数,中文的(jsp变量)。谁教教我?!
  • aaa.jsp有如下链接,当单击该链接时将id值传递给bbb.jsp,怎样在bbb.jsp中引用这个id值?
  • jsp+bean还是jsp+ejb还是jsp+servlet还是asp+activex好?
  • 谁能告诉我,怎么调试jsp程序呀!我在jsp中调用java,但是Tomcat这家伙只会给我报jsp文件出错。这可怎么办呀?
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?
  • 初学jsp,一个html调用一个jsp,这个jsp调用一个javaBean,已编译成类,最后如何部署(用j2sdkee)?
  • 我要学jsp,已经下载了j2ee1.4,需要一个支持jsp引擎的WEB服务器或jsp引擎!!(急,马上给分)
  • jsp中相对路径怎么表示?例如当前目录下的jsp目录里的文件。
  • 我已经在输出前包含了<jsp:include page="2.jsp"/>,
  • 欲学JSP,请教JSP资料,最好电子版。
  • jsp中文乱码 jsp mysql 乱码的解决方法
  • jsp+JavaBean vs jsp+Servlet+JavaBean
  • JSP/html 编辑器 Bravo JSP editor
  • JSP开发入门(五)--JSP其他相关资源
  • <jsp:include page="SystemLeft.jsp?TypeId=<%= itTypeId.toString() %>" flush="true" />


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3