Servlet接受参数和乱码解决方案

Servlet接受页面的参数:

request.getParamter(“name”);

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("/as")
public class ArgumentServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	      System.out.println("请求过来了");
	      String name=request.getParameter("name");
	      int age;
	      try {
	    	  //注意,如果获取不到参数,转换会有异常
	      age=Integer.parseInt(request.getParameter("age")) ;
	      }catch(NumberFormatException e){
	    	  age=10;
	      }
	      String gender=request.getParameter("gender");
	      System.out.println(name+age+gender);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	       this.doGet(request, response);
	}

}

在这里插入图片描述
执行结果

在这里插入图片描述
没传值显示为空
在这里插入图片描述
在这里插入图片描述
int型要异常捕获并且强制转换

int age;
	      try {
	    	  //注意,如果获取不到参数,转换会有异常
	      age=Integer.parseInt(request.getParameter("age")) ;
	      }catch(NumberFormatException e){
	    	  age=10;
	      }

表单:
get请求

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
     <form action="reg" method="get">
          用户名称:<input type="text" name="usersname"><br>
          用户密码:<input type="password" name="password"><br>
          用户性别:<input type="radio" name="gender" value="男">男
              <input type="radio" name="gender" value="女" checked="checked">女<br>
              <br>
          用户爱好:<input type="checkbox" name="hab" value="足球">足球
              <input type="checkbox" name="hab" value="篮球">篮球
              <input type="checkbox" name="hab" value="网球">网球
              <input type="checkbox" name="hab" value="台球">台球
              <br>
              <!--提交  -->
              <input type="submit" value="注册">
     </form>
</body>
</html>

在这里插入图片描述
接受参数代码

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({"/as","/reg"})
public class ArgumentServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
		//开始注册
		//接收参数
		//request.getParameter();只能获取一个值得参数
		String usersname=request.getParameter("usersname");
		String password=request.getParameter("password");
		String gender=request.getParameter("gender");
		//获取多选框,使用request.getParameterValues();返回字符串数组
		String[] hab=request.getParameterValues("hab");
		System.out.println(usersname);
		System.out.println(password);
		System.out.println(gender);
		for (int i = 0; i < hab.length; i++) {
			System.out.println(hab[i]);
		}
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	       this.doGet(request, response);
	}

}

操作
在这里插入图片描述
执行结果
在这里插入图片描述
Post请求

表单方法改为post
在这里插入图片描述
在这里发现出现乱码现象

//设置响应头的响应格式和指定编码
		response.setContentType("text/html;charset=utf-8");
		

还有一个较为重要的方法

//获取所有请求头信息
		Enumeration<String> names=request.getParameterNames();
		while(names.hasMoreElements()) {
			System.out.println(names.nextElement());
		}

Servlet的参数传递过程中乱码情况

Servlet默认使用的编码是ISO-8859-1

get请求: 方式1

//手动解决get请求乱码问题(麻烦,适合临时少量的值)
		String usersname=request.getParameter("usersname");
		usersname=new String(usersname.getBytes("ISO-8859-1"),"utf-8");

方式2:
修改tomcat中的server.xml
在这里插入图片描述
加入
URIEncoding=“UTF-8”

 <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8800" protocol="HTTP/1.1" redirectPort="8443"/>

post请求:
方式1:

//解决post请求的中文乱码现象,指定请求头的编码
		request.setCharacterEncoding("utf-8");

方式2:过滤器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值