解决request.getParament()空指针问题和字符的乱码问题,get和post都没有问题

来源:互联网 发布:java获取cookie的方法 编辑:程序博客网 时间:2024/06/15 11:21

servlet

package com.wd.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Servlet1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubdoPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubString name = req.getParameter("name");System.out.println(name);req.setAttribute("name", name);req.setAttribute("message", "msg");req.getRequestDispatcher("index.jsp").forward(req, resp);}}

filter

package com.wd.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;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.wd.uitl.MyFilter;public class CharactorFilter implements Filter {public void destroy() {// TODO Auto-generated method stub}public void doFilter(ServletRequest req, ServletResponse resp,FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stubHttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) resp;MyFilter myRequest = new MyFilter(request);chain.doFilter(myRequest, response);}public void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}

uitl重写了getParament()方法,解决了字符集的问题

package com.wd.uitl;import java.io.UnsupportedEncodingException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;public class MyFilter extends HttpServletRequestWrapper {public MyFilter(HttpServletRequest request) {super(request);// TODO Auto-generated constructor stub}@Overridepublic String getParameter(String name) {// TODO Auto-generated method stubString value = super.getParameter(name);if(value == null)value = "";try {value = new String(super.getParameter(name).getBytes("ISO-8859-1"), "utf-8");} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}return value;}}
这样对于doGet方法的乱码问题不用更改tomcat的配置,更加合理


Jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>      </head>    <body>    This is my JSP page. <br>    <form action="servlet" method="get">    <input type="text" name="name">    <input type="submit" value="提交">${message }${name }    </form>  </body></html>



0 0
原创粉丝点击