JavaWeb request用法

本文介绍了在Servlet中处理中文乱码的方法,包括GET和POST请求的解决方案,并展示了如何通过request对象传递数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

request封装了所有的请求信息

如:

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("请求方法:"+request.getMethod());
		System.out.println("URI:"+request.getRequestURI());
		System.out.println("URL:"+request.getRequestURL());
		//获取所有请求头信息
		Enumeration<String> headerNames = request.getHeaderNames();
		while (headerNames.hasMoreElements()) {
			String key = (String) headerNames.nextElement();
			String value = request.getHeader(key);
			System.out.println(key+"  "+value);
		}
	}

结果:



1、request请求中如果有中文可能会导致乱码

乱码的原因是在html中使用utf-8编码,Tomcat服务器使用iso-8859-1编码,到servlet中处理,再传递给浏览器则会导致乱码

如以下代码:

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String username=request.getParameter("username");
		System.out.println(username);
	}

请求链接为:http://localhost:8888/requestDemo/encodeservlet?username=张飞

结果:

可以这样解决get请求乱码问题:

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String username=request.getParameter("username");
		//解决get请求中文乱码问题
		username=new String(username.getBytes("iso-8859-1"),"utf-8");
		System.out.println(username);
	}

结果:


用上面这种方法有时对post乱码不起作用:

可以在方法中这样写:

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String username=request.getParameter("username");
		//解决get请求中文乱码问题
		//username=new String(username.getBytes("iso-8859-1"),"utf-8");
		System.out.println(username);
	}

2、request可以接收浏览器传来的参数或者存储数据,并传递给别的Servlet:

如在servlet1中:

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String username=request.getParameter("username");//获取来自服务器的数据
		request.setAttribute("zx","zhangxiang");//存储自定义数据
		request.getRequestDispatcher("servlet2").forward(request, response);//请求转发到servlet2
	}

在servlet2中:

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println(request.getParameter("username"));//获取request传递的参数
		System.out.println(request.getAttribute("zx"));
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值