JavaWeb中表单数据的获取及乱码问题

首先使用一个用户提交界面作为举例(文本框,密码框,选择,下拉表单等),效果如下

注:HTML < form> 标签的 action 属性,其定义和用法是:

属性值为URL,表示向何处发送表单数据。其可能值:

  • 绝对 URL - 指向其他站点(比如 src=https://blog.csdn.net/Megustas_JJC/article/details/”www.example.com/example.htm”)
  • 相对 URL - 指向站点内的文件(比如 src=https://blog.csdn.net/Megustas_JJC/article/details/”example.htm”)

例如,下面的表单拥有两个输入字段以及一个提交按钮,当提交表单时,周亮表单数据会提交到名为 “form_action.asp” 的页面:

method为get,因此在servlet的doGet方法中对信息进行获取

请求参数乱码的原因

URL编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,爱尔兰留学将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。

不同的请求方式对应不同的解决办法:

post —- request.setCharacterEncoding(“客户端编码集”);

get乱码手动解决
username=URLEncoder.encode(username, “ISO-8859-1”);// 用ISO编码

username=URLDecoder.decode(username, “utf-8”); // 用utf-8解码
简化上面写法 :
username=new String(username.getBytes(“ISO-8859-1”), “utf-8”);

get乱码 配置tomcat默认解码字符集
在tomcat/conf/server.xml
Connector中 添加一个属性
URIEncoding=”utf-8”

结论:开发时,尽量不要修改tomcat默认解码集 ,提交请求请尽量使用post ,如果非要使用get ,手动编码

原文地址:https://www.cnblogs.com/zhangyanran/p/10037522.html

时间: 2024-10-11 13:11:19

JavaWeb中表单数据的获取及乱码问题的相关文章

JavaWeb表单数据的获取方式

表单页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request

Android:解决客户端从服务器上获取数据乱码的方法

向服务器发送HTTP请求,接收到的JSON包为response,用String content = EntityUtils.toString(response.getEntity(),"utf-8");解码还是出现了中文乱码,在后面加了 String name = new String(response.getBytes("iso-8859-1"), "UTF-8"); 也无济于事.想到服务器好像是用URLENCODER编了码的,怀着试一试的态度

WebRequest 获取网页乱码

问题:在用WebRequest获取网页源码时得到的源码是乱码. 原因:1,编码不对 解决办法:设置对应编码 WebRequest request = WebRequest.Create(Url);WebResponse response = await request.GetResponseAsync(); Stream stream = response.GetResponseStream();StreamReader reader = new StreamReader(stream, Enc

关于struts2中表单提交时,中文乱码问题的解决

http://blog.csdn.net/hjw506848887/article/details/8966194 今天写项目时,突然遇到了struts2中表单提交的中文乱码问题,调了好久就是不知道答案. 下面的我的jsp页面: [html] view plaincopyprint? <form action="indexAction.action"> <input name="dimName" type="text" />

谷歌浏览器 js 获取 汉字 乱码

//第一个页面 var name=encodeURIComponent("参数"); var url="test1.html?name="+name; //第二个页面 var name=GetUrlParameters("name"); // 获取参数方法 name=decodeURIComponent(name); //encodeURIComponent 进行参数编码. //decodeURIComponent 进行参数解码. 我这边的情况是

JavaWeb 后端 &lt;十二&gt; 之 过滤器 filter 乱码、不缓存、脏话、标记、自动登录、全站压缩过滤器

一.过滤器是什么?有什么? 1.过滤器属于Servlet规范,从2.3版本就开始有了. 2.过滤器就是对访问的内容进行筛选(拦截).利用过滤器对请求和响应进行过滤 二.编写步骤和执行过程 1.编码步骤: a.编写一个类:实现javax.servlet.Filter接口 public class FilterDemo1 implements Filter { public FilterDemo1(){ System.out.println("调用了默认的构造方法"); } //用户每次访

获取网页乱码

1.是用curl抓取的数据是用类似gzip压缩后的数据导致的乱码.乱码:curl www.1ting.com |more乱码:curl -H "Accept-Encoding: gzip"www.1ting.com | more不乱码:curl -H "Accept-Encoding: gzip"www.1ting.com | gunzip | more 不乱码:curl www.1616.net |more乱码:curl -H "Accept-Encod

vc++使用IWinHttpRequest获取网页内容乱码

mfc项目的字符集为unicode字符集 乱码前代码: CString rspStr = pHttpReq->ResponseText; MessageBox(rspStr); 乱码效果: 解决方法: _variant_t varRspBody = pHttpReq->GetResponseBody(); //ULONG dataLen = varRspBody.parray->rgsabound[0].cElements; // 文本长度 char *pContentBuffer =

【Filter】CharacterEncodingFilter解决JavaWeb项目POST提交造成的中文乱码

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; public cla