继承HttpServlet实现接收和响应来自Web客户端的请求

HttpServlet

正式开发中若要使用Servlet,一般来说直接继承HttpServlet实现,因为该类实现了HTTP协议,而当前WEB开发使用的就是HTTP协议。HttpServlet可以针对不同的请求来进行处理,WEB开发中最常用的就是GET和POST请求。

HttpServlet类中的方法英文版
继承HttpServlet实现接收和响应来自Web客户端的请求_第1张图片
我这里只简单介绍一下常用的几个

//处理get请求
void doGet(HttpServletRequest req,HttpServletResponse resp)
//处理post请求
void doPost(HttpServletRequest req,HttpServletResponse resp)
//处理客户端发送过来的请求,若所有请求方式都是同样的处理逻辑,可重写此方法
void service(HttpServletRequest req,HttpServletResponse resp)

我们常继承HttpServlet实现一个Servlet,重写对应请求的处理方法以实现接收和响应来自Web客户端的请求

HttpServletRequest

HttpServletRequest是ServletRequest接口的子接口,表示HTTP协议的请求对象。既然HttpServletRequest是HTTP的请求对象,那么该接口中包含了获取各自请求信息的方法。

我只描述几个常用的API,这里我就不贴英文的API了,有兴趣的可以自行查阅API文档

//根据参数名称,获取对应参数的值.
String getParameter(String name)
//根据参数名称,获取该参数的多个值.
String[] getParameterValues(String name)
//获取所有请求参数的名字Enumeration getParameterNames()
//返回请求参数组成的Map集合.
//     key:参数名称
//     value:参数值,封装在String数组中.
Map<String,String[]> getParameterMap()

 
其他API:
//返回浏览器地址栏请求的URL
StringBuffer getRequestURL()
//返回当前请求的客户端IP
String getRemoteAddr()
//返回当前请求的资源名称,上下文路径/资源名
String getRequestURI()
//返回当前请求的上下文路径
String getContextPath()
//返回当前请求的Servlet路径
String getServletPath()
//根据请求头返回当前请求对应的请求头的值
String getHeader(String name)
//返回当前请求的请求方式
String getMethod()

接收数据乱码

若前台页面传输的是中文,则可能出现乱码

先将接收的数据使用ISO-8859-1转换成字节数组 byte[] b
req.getParameter(“name”).getBytes(“ISO-8859-1”);
 
再将字节数组转换成中文
String result=new String(b,”UTF-8”);

其他解决方式

设置请求编码,只能解决POST请求 req.setCharsetEncoding(“UTF-8”);
修改Tomcat中server.xml中的编码,只能解决GET请求

HttpServletResponse

HttpServletResponse是ServletResponse接口的子接口,表示HTTP协议的响应对象。既然HttpServletResPonse是HTTP的响应对象,那么该接口中包含了针对各自请求进行响应的方法。响应无非就是将数据输出到客户端,在IO中流的输出无非就是两种:字节输出流和字符输出流。

//设置响应编码格式
void setCharsetEncoding(String charset)
//设置响应的内容的类型,可同时设置编码
void setContentType(String type)
//获取字符输出流
PrintWriter getWriter()
//获取字节输出流
ServletOutputStream getOutputStream()

注意:服务器响应的数据是需要在客户端显示的,若输出的是中文,则需要编码

设置响应内容的文本和编码格式

resp.setContentType(“text/html;charset=utf-8”);
 
setContentType(“text/html;charset=utf-8”)等同于以下两句代码
resp.setCharsetEncoding(“utf-8”); resp.setContentType(“text/html”);

Servlet访问路径配置

url-pattern中配置多个访问路径

1.一个servlet-mapping中配置多个url-pattern

2.配置多个servlet-mapping

3.使用通配符

4.通配符+后缀名

注意:对后缀名进行配置,url-pattern中不需要使用/

一般后缀名使用.do、.action结尾,不要使用.html、.jsp之类的结尾,因为当前配置的是针对servlet的访问,若存在针对html的访问,可能会访问不到html页面

你可能感兴趣的:(继承HttpServlet实现接收和响应来自Web客户端的请求)