欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    大概內(nèi)容:

    1.直接在目標(biāo)中編碼參數(shù)

    2.過濾器解決中文亂碼

    3.通過一個(gè)基類解決中文亂碼

    直接在目標(biāo)中編碼參數(shù)

    直接上代碼:

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    @SuppressWarnings("serial")
    public class Demo3Servlet extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            //這里設(shè)置輸出到前端的文本的編碼方式
            response.setContentType("text/html;charset=utf-8");
            String name=request.getParameter("name");
            String age=request.getParameter("age");
            //手動(dòng)將參數(shù)值編碼
            name=new String(name.getBytes("iso-8859-1"),"utf-8");
            //控制臺(tái)輸出
            System.out.println(name+","+age);
            //網(wǎng)頁(yè)上輸出
            response.getWriter().print(name+":歡迎光臨");
        }
        //這里該方法沒有實(shí)際用到
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String name=request.getParameter("name");
            String age=request.getParameter("age");
            System.out.println(name=","+age);
            response.getWriter().print(name+":歡迎光臨");
        }
    }

    通過過濾器解決中文亂碼

    1.先寫一個(gè)過濾器:

    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.util.Iterator;
    import java.util.Map;
    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.HttpServletRequestWrapper;
    public class CharacterFilter implements Filter{
        @Override
        public void destroy() {
        }
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {
            HttpServletRequest httpRequest=(HttpServletRequest) request;
            //生成我們自己包裝好的類
            MyRequest req=new MyRequest(httpRequest);
            chain.doFilter(req, response);//放行
        }
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("過濾器初始化了!");
        }
    }
    /*
     * 裝飾類
     * 解決get方式請(qǐng)求中的中文亂碼
     */
    class MyRequest extends HttpServletRequestWrapper{
        public MyRequest(HttpServletRequest request) {
            super(request);
        }
        //修改增強(qiáng)getParameter方法
        @Override
        public String getParameter(String name) {
            //先獲取原來參數(shù)的值
            String value=super.getParameter(name);
            if("get".equalsIgnoreCase(super.getMethod())){//判斷是否是"get"方式請(qǐng)求
                try {
                    //我們自己編碼前端傳來的參數(shù)
                    value=new String(value.getBytes("iso-8859-1"),"utf-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }
            //返回我們處理過的參數(shù)值
            return value;
        }
        //修改增強(qiáng)getParameterValues方法
        @Override
        public String[] getParameterValues(String name) {
            //獲取原來的參數(shù)值
            String values[]=super.getParameterValues(name);
            if("get".equalsIgnoreCase(super.getMethod())){//判斷是否是"get"方式 
                for(int i=0;itry {
                        //我們自己編碼前端傳過來的參數(shù),其中g(shù)etCharacterEncoding()是我們?cè)趕ervlet中自己設(shè)置的編碼,也可以直接寫哪種編碼
                        values[i]=new String(values[i].getBytes("ISO-8859-1"),getCharacterEncoding());
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                }
            }
            //返回處理過的參數(shù)數(shù)組
            return values;
        }
        修改增強(qiáng)getParameterMap方法
        @Override
        public Map getParameterMap() {
            //獲取原來的參數(shù)值
            Map map=super.getParameterMap();
            if("get".equalsIgnoreCase(super.getMethod())){//判斷是否是"get"方式
                Iterator> it=map.entrySet().iterator();
                while(it.hasNext()){
                    String values[]=it.next().getValue();
                    for(int i=0;itry {
                            values[i]=new String(values[i].getBytes("ISO-8859-1"),getCharacterEncoding());
                        } catch (UnsupportedEncodingException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
            //返回處理過的map
            return map ;
        }
    }

    2.寫一個(gè)處理數(shù)據(jù)的

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    @SuppressWarnings("serial")
    public class Demo1Servlet extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            //這里給過濾器的裝飾類提前設(shè)置好編碼
            request.setCharacterEncoding("utf-8");
            //這里設(shè)置編碼是輸出到前端時(shí)保證編碼不出錯(cuò)
            response.setContentType("text/html;charset=utf-8");
            String name=request.getParameter("name");
            String strAge=request.getParameter("age");
            //輸出到控制臺(tái)
            System.out.println(name+","+strAge);
            //輸出到頁(yè)面
            response.getWriter().print(name+":歡迎光臨");
        }
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            //因?yàn)檫@里演示get方式請(qǐng)求,所以直接調(diào)用doGet()方法
            doGet(request, response);
        }
    }

    通過一個(gè)基類解決中文亂碼

    1.先寫一個(gè)類

    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.Iterator;
    import java.util.Map;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletRequestWrapper;
    import javax.servlet.http.HttpServletResponse;
    @SuppressWarnings("serial")
    public abstract class BaseServlet extends HttpServlet{
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            String cmd=req.getParameter("cmd");
            if(null==cmd || cmd.equals("")){
                cmd="execute";
            }
            try {
                Method method=this.getClass().getMethod(cmd, HttpServletRequest.class, HttpServletResponse.class);
                //聲明我們自己的包裝類
                MyRequest myRequest=new MyRequest(req);
                method.invoke(this, myRequest, resp);
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (SecurityException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            doGet(req, resp);
        }
        public abstract void execute(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException;
    }
    /*
     * 裝飾類
     * 解決get方式請(qǐng)求中的中文亂碼
     */
    class MyRequest extends HttpServletRequestWrapper{
        public MyRequest(HttpServletRequest request) {
            super(request);
        }
        //修改增強(qiáng)getParameter方法
        @Override
        public String getParameter(String name) {
            //先獲取原來參數(shù)的值
            String value=super.getParameter(name);
            if("get".equalsIgnoreCase(super.getMethod())){//判斷是否是"get"方式請(qǐng)求
                try {
                    //我們自己編碼前端傳過來的參數(shù),其中g(shù)etCharacterEncoding()是我們?cè)趕ervlet中自己設(shè)置的編碼,也可以直接寫哪種編碼
                    value=new String(value.getBytes("ISO-8859-1"),getCharacterEncoding());
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }
            //返回我們處理過的參數(shù)值
            return value;
        }
        //修改增強(qiáng)getParameterValues方法
        @Override
        public String[] getParameterValues(String name) {
            //獲取原來的參數(shù)值
            String values[]=super.getParameterValues(name);
            if("get".equalsIgnoreCase(super.getMethod())){//判斷是否是"get"方式 
                for(int i=0;itry {
                        //我們自己編碼前端傳過來的參數(shù)
                        values[i]=new String(values[i].getBytes("ISO-8859-1"),getCharacterEncoding());
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                }
            }
            //返回處理過的參數(shù)數(shù)組
            return values;
        }
        修改增強(qiáng)getParameterMap方法
        @Override
        public Map getParameterMap() {
            //獲取原來的參數(shù)值
            Map map=super.getParameterMap();
            if("get".equalsIgnoreCase(super.getMethod())){//判斷是否是"get"方式
                Iterator> it=map.entrySet().iterator();
                while(it.hasNext()){
                    String values[]=it.next().getValue();
                    for(int i=0;itry {
                            values[i]=new String(values[i].getBytes("ISO-8859-1"),getCharacterEncoding());
                        } catch (UnsupportedEncodingException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
            //返回處理過的map
            return map ;
        }
    }

    2.寫一個(gè)處理數(shù)據(jù)的

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import cn.hncu.utils.BaseServlet;
    @SuppressWarnings("serial")
    //這里要繼承我們自己寫的BaseServlet類,并實(shí)現(xiàn)他的抽象方法
    public class Demo2Servlet extends BaseServlet{
        @Override
        //重寫父類的抽象方法
        public void execute(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            //這里給過濾器的裝飾類提前設(shè)置好
            req.setCharacterEncoding("utf-8");
            //這里設(shè)置編碼是輸出到前端時(shí)保證編碼不出錯(cuò)
            resp.setContentType("text/html;charset=utf-8");
            String name=req.getParameter("name");
            String age=req.getParameter("age");
            System.out.println(name+","+age);
            resp.getWriter().print(name+":歡迎光臨!");
        }
    }

    上述的三種方式都可以解決get方式請(qǐng)求的中文亂碼問題,第一種最簡(jiǎn)單瀏覽器請(qǐng)求中文參數(shù)亂碼的問題瀏覽器請(qǐng)求中文參數(shù)亂碼的問題,第二種和第三種其實(shí)原理是差不多的:都是對(duì)進(jìn)行包裝,修改或者增強(qiáng)其中的一些方法;下面貼上主頁(yè)代碼和web.xml配置文件的代碼:

    index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <html>
      <head>
        <title>解決get方式請(qǐng)求中文亂碼的兩種方式演示title>
      head>
      <body>
        <h3>過濾器解決中文亂碼h3>
        <a href="Demo1Servlet?name=葉秋&age=21">過濾器解決中文亂碼a><br/>
        <a href="Demo2Servlet?name=黃少天&age=22">基類serlvet解決中文亂碼a><br/>
        <a href="Demo3Servlet?name=蘇沐橙&age=23">直接在servlet中解決亂碼a><br/>
      body>
    html>

    web.xml

    
    <web-app version="3.0" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <display-name>display-name>
      
      <filter>
        <filter-name>demo1filter-name>
        <filter-class>cn.hncu.filter.CharacterFilterfilter-class>
      filter>
      <filter-mapping>
        <filter-name>demo1filter-name>
        <servlet-name>Demo1Servletservlet-name>
      filter-mapping>
      
      <servlet>
        <servlet-name>Demo1Servletservlet-name>
        <servlet-class>cn.hncu.servlet.Demo1Servletservlet-class>
      servlet>
      <servlet>
        <servlet-name>Demo2Servletservlet-name>
        <servlet-class>cn.hncu.servlet.Demo2Servletservlet-class>
      servlet>
      <servlet>
        <servlet-name>Demo3Servletservlet-name>
        <servlet-class>cn.hncu.servlet.Demo3Servletservlet-class>
      servlet>
      <servlet-mapping>
        <servlet-name>Demo1Servletservlet-name>
        <url-pattern>/Demo1Servleturl-pattern>
      servlet-mapping>    
      <servlet-mapping>
        <servlet-name>Demo2Servletservlet-name>
        <url-pattern>/Demo2Servleturl-pattern>
      servlet-mapping>
      <servlet-mapping>
        <servlet-name>Demo3Servletservlet-name>
        <url-pattern>/Demo3Servleturl-pattern>
      servlet-mapping>    
      <welcome-file-list>
        <welcome-file>index.jspwelcome-file>
      welcome-file-list>
    web-app>

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有