随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。
posts - 398,comments - 0,views - 13万

首先创建一个JSP和Servlet:

复制代码
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>
</head>
<body>
<a href="<c:url value='/AServlet?username=张三'/>">点击这里</a>
<form action="<c:url value='/AServlet'/>" method="post">
<input type="text" name="username" value="张三"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
复制代码
复制代码
package svt;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/AServlet")
public class AServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("username");    // 获取参数
        resp.getWriter().print(name);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("username");    // 获取参数
        response.getWriter().print(name);
    }
}
复制代码

访问后发现,post请求和get请求得到的都是乱码:

所以就需要解决这个乱码问题;

先创建一个过滤器:

复制代码
package 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.annotation.WebFilter;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cla.AReq;

public class AFt extends HttpFilter implements Filter {
    int count = 0;

    public void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        // 处理编码问题
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        System.out.println("拦截!" + count++);
        HttpServletResponse res = (HttpServletResponse) response;
        if (count == 5) {
            response.getWriter().print("到5了!");
            res.sendRedirect("/day430a/jsp/d.jsp");
//            request.getRequestDispatcher("/jsp/d.jsp").forward(request, response);
        } else {
            chain.doFilter(request, response);
        }
    }

    public void init(FilterConfig fConfig) throws ServletException {
        System.out.println("Born!");
    }

}
复制代码

因为这个过滤器配置的是 /* 会过滤所有每一次请求的任意页面,所以使用它来设置编码就相当于设置了每一个次请求的页面编码。

还有一种是调包的形式,自定义类继承HttpServletRequestWapper类重写getParam()方法,将获取的参数使用String的构造方法能够将一种编码转换为另一种编码。

posted on   时间完全不够用啊  阅读(78)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示