JavaWeb——post和get方法

post和get方法

①从安全上来说:post > get
②从数据容量上来说:post > get ,post是无限制的,get最多1024byte

继上篇笔记Servle项目中将表单改用get方法发送请求

(1)数据使用英文发送请求

第一种情况:密码验证正确
客户端请求:
JavaWeb——post和get方法_第1张图片
服务端接收:JavaWeb——post和get方法_第2张图片
服务端对客户端的响应:
JavaWeb——post和get方法_第3张图片
第二种情况:密码验证失败
客户端请求:
JavaWeb——post和get方法_第4张图片
服务端接收:
JavaWeb——post和get方法_第5张图片
服务端对客户端的响应:
JavaWeb——post和get方法_第6张图片
由于上述过程全都是英文,所以没有出现乱码的情况

(2)数据使用中文发送请求

客户端请求:
JavaWeb——post和get方法_第7张图片
服务端接收:
JavaWeb——post和get方法_第8张图片
从上图明显可以看到服务端接收到的 ”杰克“ 出现了乱码。

服务端对客户端的响应:
JavaWeb——post和get方法_第9张图片

(3)解决方案

使用 ISO-8859-1 编码(ISO-8859-1编码是单字节)来过渡
JavaWeb——post和get方法_第10张图片
只需将 login.html中 form 标签的 method属性改为 method=“get”;然后重写的service方法完整代码为:

package com.aiit.servlet_test1;

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 LoginServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置请求对象支持中文编码
		//request.setCharacterEncoding("UTF-8");
		
		
		String account = request.getParameter("account");
		byte[] bytes = account.getBytes("ISO-8859-1");
		account = new String(bytes,"UTF-8");
		
		String pwd = request.getParameter("pwd");
		System.out.println("account:"+account);
		System.out.println("pwd:"+pwd);
		
		//设置response响应的文档类型和编码
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter pw = response.getWriter();
		//假设合法的账号和密码分别是admin和123
		//判断登陆用户的合法性
		if(account.equals("admin") && pwd.equals("123")) {
			//System.out.println("合法用户");
			//向客户端响应内容,合法用户
			
			//1.通过response获得指向客户端的打印流(输出流)
			pw.println("

合法用户

"
); }else { //System.out.println("非法用户"); //向客户端响应内容,非法用户 pw.println("非法用户"); } } }

测试:
客户端请求:
JavaWeb——post和get方法_第11张图片
服务端接收:
JavaWeb——post和get方法_第12张图片
服务端对客户端的响应:
JavaWeb——post和get方法_第13张图片
综上即可解决 get 方法传递中文数据引起的中文乱码问题。

你可能感兴趣的:(JavaWeb)