在项目中,我们经常遇到需要在jsp页面切换中传递中文字符。这主要有两种方式。
URL方式,例如:http://website/test1.jsp?act=add&type=苹果¶m=%20D%20B
FORM方式,例如:
<form name=test mehtod="post">
<input type=hidden name=text2 value="中文">
<input type=text name=text1>
<input type=submit value=submit>
</form>
我们将针对这两种情况,分别提供中文正确传递的解决方法。
情况1:URL方式
例如:http://website/test1.jsp?act=add&type=苹果¶m=%20D%20B
一般来说我们很少直接在URL里面把参数写成中文,如例子中的"type=苹果"这样传递。如果出现这种情况,在我们的接收参数的页面我们只需要做个简单的转换就可以了。
代码test1.jsp:(主要部分)
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String type = request.getParameter("type");
String result = new String(type.getBytes("iso-8859-1"), "gb2312");
out.println(result);
%>
更普遍的做法,就是对url中的中文字符进行编码,变成类似type=%20D%20B这样的字符。
代码MyJsp1.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="java.net.*" %>
<a href='./MyJsp2.jsp?act=<%=URLEncoder.encode("中国人 非常好 =-")%>'>test</a>
代码MyJsp2.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="java.net.*" %>
String tempVal = URLDecoder.decode(request.getParameter("act"));
out.println(new String(tempVal.getBytes("ISO-8859-1"), "gb2312"));
情况2:FORM方式
请注意,我们只是讨论在<form enctype="application/x-www-form-urlencoded" >这种形式的中文情况,因为在enctype="multipart/form-data"的时候通过解析出来中文也可以运用这种方法进行字符转化,所以不再重复讨论。
<form method=post>这种情况最简单。
代码MyJsp1.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<form action="./MyJsp2.jsp" method="post" enctype="application/x-www-form-urlencoded" >
<input type=hidden name=act value=动作 />
<input type=submit value=ok>
</form>
代码MyJsp2.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
request.setCharacterEncoding("gb2312");
out.println(request.getParameter("act"));
或者
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
String tempVal = request.getParameter("act");
out.println(new String(tempVal.getBytes("ISO-8859-1"), "gb2312"));
<form method=get>情况。
代码MyJsp1.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<form action="./MyJsp2.jsp" method="get" enctype="application/x-www-form-urlencoded" >
<input type=hidden name=act value=动作 />
<input type=submit value=ok>
</form>
代码MyJsp2.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String tempVal = request.getParameter("act");
out.println(new String(tempVal.getBytes("ISO-8859-1"), "gb2312"));
%>
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
/**
* <p>Title: java mail</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author petehero
* @version 1.0
*/
public class SendMail
{
public SendMail()
{
}
public void send(){
try
{
Properties props = new Properties();
Session sendMailSession;
Store store;
Transport transport;
props.put("mail.smtp.auth","true");
props.put("mail.smtp.host", "smtp.yourmail.com"); //smtp主机名。
props.put("mail.smtp.user","username@yourmail.com"); //发送方邮件地址。
props.put("mail.smtp.password","888888"); //邮件密码。
PopupAuthenticator popA=new PopupAuthenticator();//邮件安全认证。
PasswordAuthentication pop = popA.performCheck("username","888888"); //填写用户名及密码
sendMailSession = Session.getInstance(props, popA);
Message newMessage = new MimeMessage(sendMailSession);
newMessage.setFrom(new InternetAddress("username@yourmail.com"));
newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("receiver@mail.com")); //接收方邮件地址
newMessage.setSubject("邮件主题");
newMessage.setSentDate(new Date());
String mailContent;
mailContent="你好!\n\n";
mailContent+="\t邮件正文\n\n";
mailContent+=new Date().toLocaleString();
newMessage.setText(mailContent); //邮件正文
transport = sendMailSession.getTransport("smtp");
transport.send(newMessage);
}
catch (MessagingException ex)
{
ex.printStackTrace();
}
}
public static void main(String[] args)
{
SendMail sml = new SendMail();
sml.send();
}
public class PopupAuthenticator extends Authenticator{
String username=null;
String password=null;
public PopupAuthenticator(){}
public PasswordAuthentication performCheck(String user,String pass){
username = user;
password = pass;
return getPasswordAuthentication();
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
}
//经测试可运行
分享到:
相关推荐
在 JSP 程序中,当我们使用 GET 或 POST 方法提交中文信息时,可能会出现乱码问题。这是因为 Tomcat 对于 GET 和 POST 方法的编码处理方式不同。对于 POST 方法,Tomcat 会使用 request.setCharacterEncoding 方法...
本文将深入探讨在JSP页面中如何正确地通过GET和POST方法传递中文参数,以及在不同场景下应采取的最佳实践。 #### 二、GET方法中文参数传递 **1. 直接在URL中传递中文参数** 直接在URL中包含中文参数,如`...
### jsp中post和get传输方式的区别 在Web开发领域,特别是使用Java Server Pages (JSP) 进行网页开发时,GET与POST是两种最常见的HTTP请求方法。这两种方法各有其适用场景及特点,理解它们之间的区别对于提高网站的...
然而,在处理中文参数时,尤其是通过GET和POST方法传递时,经常会出现乱码问题。这通常是由于字符编码不一致或者处理不当导致的。以下是对这一问题的详细解析: 首先,我们需要理解字符编码的基本概念。在Web中,...
摘要:本文将对 Java Web 中 Request 对象中 GET 和 POST 方法的差异进行分析和比较,通过代码示例和输出结果,展示 GET 和 POST 方法的不同之处,并分析其优缺点。 GET 方法和 POST 方法都是服务器的请求方式,...
### jsp中HttpClient中的POST方法实例详解 #### 一、概述 在Web开发中,特别是使用JSP(Java Server Pages)进行服务器端编程时,经常需要通过HTTP客户端库(如HttpClient)来发起网络请求,包括GET和POST请求。...
JSP 页面中文参数的传递(get 和 post 方法分析) JSP 页面中文参数的传递是非常有用的,在实际的编程中,我们常常遇到需要在 JSP 页面切换中传递中文字符。有两种方式可以实现中文参数的传递,即 URL 方式和 FORM ...
在JSP中,参数通常通过GET和POST方法在页面之间传递,但是直接在URL中包含中文字符会导致问题,因为HTTP协议本身是基于ASCII字符集设计的。因此,在涉及中文参数传递时,必须采取相应措施来确保字符能够正确传输和...
Ajax 中 get 与 post 请求的详细解释 Ajax 技术中 get 与 post 两种请求方式是...在 Ajax 中,get 和 post 两种请求方式都有其特点和缺陷,开发者应该根据实际情况选择合适的请求方式,以确保数据的安全性和可靠性。
总结,"超强过滤器"是解决JSP-Servlet之间中文参数GET-POST传递问题的有效手段,通过统一设定请求的字符编码,确保在整个Web应用中中文数据能够正确无误地传输和处理。对于大型项目,这样的全局解决方案可以大大提升...
Java中的乱码问题是一个常见的编程挑战,特别是在处理网络请求(如GET和POST)时。本文将深入探讨如何解决这些问题,并且不局限于特定的请求类型。首先,我们需要理解字符编码的基本概念,然后分析Java中可能出现...
总结而言,在JSP页面中,GET和POST方法是实现表单数据提交的两种基本方式。了解它们之间的区别,并根据实际需求选择合适的方法,对于构建安全、有效的Web应用至关重要。通过本文介绍的理论知识与实例代码,相信读者...
### 如何解决JSP页面中的中文问题 在Web开发中,尤其是使用Java Server Pages (JSP)进行开发时,处理中文字符常常会...通过以上方法,可以有效地解决JSP页面中的中文乱码问题,提高Web应用程序的用户体验和稳定性。
JSP 中文乱码问题解决办法 JSP 页面中中文乱码问题是指在 JSP 页面中使用中文时,页面显示...解决 JSP 中文乱码问题需要从多方面入手,包括设置页面的字符编码、使用 POST 方式提交表单、使用 GET 方式提交表单等。
在jsp中文乱码问题中,乱码的出现是由于编码格式不一致所导致的。在jsp文件中,存在三个地方的编码格式:jsp文件的存储格式、解码格式和控制浏览器的解码方式。如果这三个地方的编码格式不一致,将会出现乱码。 1. ...
jsp+ajax 发送 GET 请求的方法 本文主要介绍了 jsp+ajax 发送 GET 请求的方法,包含了 Ajax 数据的发送与 JSP 文件的处理技巧。下面是详细的知识点: 一、Ajax 发送 GET 请求 Ajax 发送 GET 请求是通过创建 ...
在JavaWeb开发中,JSP和Servlet经常用来处理HTTP请求,其中包括两种主要的请求方式:GET和POST。本文将深入探讨这两种请求方式的区别。 首先,GET请求和POST请求在数据传输方式上有显著差异。GET请求将参数直接附加...
### JSP中解决中文乱码的万能方法 在JSP开发过程中,中文乱码问题是一个常见的技术难题,尤其在处理客户端与服务器之间的数据...只要按照以上介绍的方法逐一排查和调整,便可以有效地解决JSP项目中的中文乱码问题。
在JavaServer Pages (JSP)开发中,处理中文字符的编码问题是一项常见的任务。中文字符在不同的阶段可能会遇到乱码,这通常与JSP页面、HTTP请求...通过理解和应用这些原理,可以有效地管理和防止JSP中的中文乱码问题。
总结来说,解决Java中POST和GET请求的中文乱码问题主要涉及以下几个步骤: 1. 确保HTML表单页面使用正确的字符集(通常为UTF-8)。 2. 在服务器端接收请求时,设置请求的字符编码。 3. 对于GET请求,可能需要在...