JSP详细篇――Servlet过滤器和监听器(二)

JSP详细篇――Servlet过滤器和监听器(二),第1张

概述4.字符编码过滤器在JavaWeb开发中,由于Web容器内部所使用的编码式并不支持中文,所以,处理浏览器请求的中文数据会出现乱码。Web容器使用的编码式是ISO-8859-1,所以在Web应用的业务处理中也会使用ISO-8859-1的编码式。虽然浏览器提交请求使用的中文编码式是UTF-8,但是经业务 4.字符编码过滤器

在Java Web开发中,由于Web容器内部所使用的编码格式其实不支持中文,所以,处理阅读器要求的中文数据会出现乱码。

Web容器使用的编码格式是ISO⑻859⑴,所以在Web利用的业务处理中也会使用ISO⑻859⑴的编码格式。虽然阅读器提交要求使用的中文编码格式是UTF⑻,但是经业务处理中的ISO⑻859⑴编码,就会出现乱码。在开发中,处理此问题的方法是:通过过滤器来处理字符编码。

范例:

实现图书信息的添加功能,并创建字符编码过滤器,避免中文乱码出现。

(1)创建字符编码过滤器,其名称为EnCodingFilter,该类实现了javax.servlet.Filter接口,并在doFilter()方法中对要求中的中文的字符编码格式进行设置。

package com.zgy.filter;

 

import java.io.IOException;

 

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.servletexception;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

 

public class EnCodingFilter implements Filter {

String enCoding = null; // 字符编码

 

@OverrIDe

public voID destroy() {

// Todo auto-generated method stub

enCoding = null;

}

 

@OverrIDe

public voID doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, servletexception {

// Todo auto-generated method stub

if (enCoding != null) {

request.setCharacterEnCoding(enCoding); //设置resquest字符编码

response.setContentType("text/HTML;charset=" + enCoding); //设置response字符编码

}

chain.doFilter(request, response); //传递给下1个过滤器

}

 

@OverrIDe

public voID init(FilterConfig filterConfig) throws servletexception {

// Todo auto-generated method stub

enCoding = filterConfig.getinitParameter("enCoding"); //获得初始化参数enCoding

}

 

}

 

(2)配置过滤器EnCodingFilter

 

<filter>

<filter-name>EnCodingFilter</filter-name>

<filter-class>com.zgy.filter.EnCodingFilter</filter-class>

<init-param>

<param-name>enCoding</param-name>

<param-value>UTF⑻</param-value>

</init-param>

</filter>

<filter-mapPing>

<filter-name>EnCodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapPing>

 

(3)创建名为BookServlet类,该类继承了httpServlet,是处理添加图书信息要求的Servlet对象。

 

package com.zgy.servlet;

 

import java.io.IOException;

import java.io.PrintWriter;

 

import javax.servlet.servletexception;

import javax.servlet.http.httpServlet;

import javax.servlet.http.httpServletRequest;

import javax.servlet.http.httpServletResponse;

 

public class BookServlet extends httpServlet {

private static final long serialVersionUID = 1L;

 

protected voID doGet(httpServletRequest request,

httpServletResponse response) throws servletexception, IOException {

// 处理get要求

doPost(request, response);

}

 

voID doPost(httpServletRequest request, IOException {

PrintWriter out = response.getWriter(); //获得PrintWriter

String ID = request.getParameter("ID");//获得图书编号

String name = request.getParameter("name");//获得图书名称

String author = request.getParameter("author");//获得图书作者

String price = request.getParameter("price");

out.print("<h2>图书信息添加成功</h2><hr>");

out.print("图书编号:"+ID+"</br>");

out.print("图书名称:"+name+"图书作者:"+author+"图书价格:"+price+"</br>");

out.flush();

out.close();

}

 

}

 

PS:

在Java Web开发中,通常情况下,Servlet所处理的要求是GET或POST,所以可以在doGet()方法中调用doPost()方法,把业务代码写到doPost()方法中,也能够在doPost()方法中调用doGet()方法,把业务处理代码写到doGet()方法中,不管Servlet接受的要求类型是GET还是POST,Servlet都会对其进行处理

 

(4)配置BookServlet

 

 <servlet>

   <servlet-name>BookServlet</servlet-name>

   <servlet-class>com.zgy.servlet.BookServlet</servlet-class>

  </servlet>

  <servlet-mapping>

   <servlet-name>BookServlet</servlet-name>

   <url-pattern>/BookServlet</url-pattern>

  </servlet-mapping>

 

(5)创建book.Jsp页面,他是程序中的主页,该页面主要用于放置添加图书信息的表单。

<%@ page language="java" import="java.util.*" pageEnCoding="UTF⑻"%>

<%

String path = request.getcontextpath();

String basePath = request.getScheme()+"://"+request.getServername()+":"+request.getServerPort()+path+"/";

%>

 

<!DOCTYPE HTML PUBliC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML>

  head>

    base href="<%=basePath%>">

    

    Title>book page</>

Meta http-equiv="pragma" content="no-cache""cache-control" "expires" "0">    

"keywords" "keyword1,keyword2,keyword3""description" "This is my page">

@H_444_419@<!--

@H_444_419@<link @H_444_419@rel@H_444_419@="@H_444_419@stylesheet@H_444_419@" type="text/@H_444_419@CSS@H_444_419@" @H_444_419@href@H_444_419@="styles.CSS">

@H_444_419@-->

  >

  

  body>

   form action="BookServlet" method="post">

    table align="center" border="1" wIDth="350"trtd class="2" colspan="2"h2>添加图书信息td"right">图书编号:input type="text" name="ID">图书名称:td"name">图书作者:"author">图书价格:"price""submit" value="添  加"/>

    tableform




 

 

 

 

总结

以上是内存溢出为你收集整理的JSP详细篇――Servlet过滤器和监听器(二)全部内容,希望文章能够帮你解决JSP详细篇――Servlet过滤器和监听器(二)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1019616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存