Servlet常用接口、类及其方法

Servlet常用接口、类及其方法

在Web编程中使用servlet时,开发者主要用到doGet和doPost方法。当发出客户端请求的时候,调用Servlet的service方法并传递一个请求和响应对象。Servlet首先判断该请求是GET操作还是POST操作。然后分别调用doGet或doPost方法。doGet和doPost都接受请求(HttpServletRequest)和响应(HttpServletResponse)。

GET请求:表单和地址栏都是GET请求。

POST请求:只有表单请求。

  1. doGet()

    当客户端发送HTTP请求使用GET方法时就调用doGet()方法。HTTP缺省方法就是GET。

public class DoGetServlet extends HttpServlet {
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
        request.setCharacterEncoding("gb2312");
        PrintWriter out = response.getWriter();
        out.println("The user ID is :"+request.getParameter("userID"));
        out.println("The user password is :"+request.getParameter("userPWD"));
    }
}
  1. doPost()

    当客户端发送HTTP请求使用POST方法时就调用doPost()方法。Post适合发送大量的数据.

    
    public class DoPostServlet extends HttpServlet {
        public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
            request.setCharacterEncoding("gb2312");
            PrintWriter out = response.getWriter();
            out.println("The user ID is :"+request.getParameter("userID"));
            out.println("The user password is :"+request.getParameter("userPWD"));
        }
    }  
    

HttpServletRequest接口

1)getParameter()

public String getParameter(String key)

此方法试图将根据查询串中的关键字定位对应的参数并返回其值。如果有多个值则返回列表中的第一个值。如果请求信息中没有指定参数,则返回null。

2)getParameterValues():

public String[] getParameterValues(String key)

如果一个参数可以返回多个值,比如复选框集合,则可以用此方法获得对应参数的所有值。如果请求信息中没有指定参数,则返回null。

HttpServletResponse接口

1)setContentType():

public void setContentType(String type)

在给调用者发回响应前,必须用此方法来设置HTTP响应的MIME类型。可以是任何有效的MIME类型,当给浏览器返回HTML是就是”text/html”类型。

2)getWriter():

public PrintWriter getWriter()throws IOException

此方法将返回PrintWriter对象,把servlet的结果作为文本返回给调用者。PrintWriter对象自动把Java内部的UniCode编码字符转换成正确的编码以使客户端能够阅读。

3)getOutputStream():

public ServletOutputStream getOutputStream() throws IOException

此方法返回ServletOutputStream对象,它是java.io.OutputStream的一个子类。此对象向客户发送二进制数据。

4)setHeader():

public void setHeader(String name,String value)

此方法用来设置送回给客户的HTTP响应头。有一些快捷的方法用来改变某些常用的响应头,但有时也需要直接调用此方法。

Servlet接口 JSP内置对象
HTTPServletRequest request
HTTPServletResponse response
ServletConfig config
HTTPSession Session
ServletContext application 两种取得方式(对应两种初始化方法) ①无参数初始化方法:不写,直接取得 ②如果针对有构造(init(ServletConfig))方法则必须通过config对象取得

Servlet的环境配置和运行

  1. web.xml文件

基本的web.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">

</web-app> 

现在配置一个项目的缺省访问文件。在之前加入以下语句:

<welcome-file-list>
		<welcome-file>exa.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

这几句设置,意思是当IE中输入http://127.0.0.1:8080/xxx(或其他域名、IP地址输入形式)而不输入Web页文件名时,查找调用页面文件的顺序为exa.htm→index.htm→index.jsp,找到那一个,就显示那一个;没有找到,就出现访问资源不存在的错误 或者列出目录下的所有文件和子目录。缺省访问文件的配置不是必需的。

Servlet要在web.xml中注册了才能访问。现在举一个最简单的例子。

一个最简单Servlet,文件名ServletExample.java,代码如下:

img

经过编译,按其中包的定义(package exa;)形成字节码文件ServletExample.class,放在chpt/WEB-INF/classes中,则在web.xml中注册的语句可以写成:

<servlet>
		<servlet-name>ServletExample</servlet-name>
		<servlet-class>exa.ServletExample</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>ServletExample</servlet-name>
		<url-pattern>/servexa</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>ServletExample</servlet-name>
		<url-pattern>/newunknownUniversity.edu.cn</url-pattern>
	</servlet-mapping>

如图所示,两个映射地址访问的效果是一样的。

img

img

映射访问地址只是一种形式,可以随意定义,只要第一个字符是“/”,且不与其他资源重名就可以。允许多次映射,使得资源可以用多种形式访问。

注意: 每次修改web.xml文件后,都要重启服务器,这样新的配置才可以起作用。

posted @ 2020-08-15 09:39  actorhuang  阅读(793)  评论(0编辑  收藏  举报