在项目中,我们经常遇到需要在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方法分析(雷惊风).
JSP-GET-POST传递的乱码问题 中文参数传递乱码问题一直伴随着我们,整理的解决过程。
JSP页面中文参数的传递(get和post方法分析).docx
遇到类似的中文参数就转啊转的,感觉世界不那么美好了!这还不累死人啊,一会GET转,一会POST转,痛苦! 超强过滤器彻底解决JSP-SERVLET中文参数GET-POST传递的问题
JSP页面中文参数传递在实际的编程中是十分有用的,get和post方法更是十分的常见,那如何掌握好这些方法呢?本文将会向你实现这些方法的具体事宜
Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据
主要介绍了JSP之表单提交get和post的详解及实例的相关资料,希望通过本文大家能够掌握使用get与post的方法,需要的朋友可以参考下
主要介绍了JSP、Servlet中get请求和post请求的区别总结,列举了多条不同点,需要的朋友可以参考下
android基础 POST GET 读取后台语言(PHP JSP)的程序!
JSP中文乱码问题综述,中文乱码解决大全,表单使用Post方式提交后接收到的乱码问题,表单get提交方式的乱码处理方式,上传文件时的乱码解决,Java代码关于url请求,接受参数的乱码,关于jsp在MyEclipse中打开的乱码问题,...
通过简单的办法解决Tomcat中出现的乱码,本文章使用于jsp servlet初学者
讲述javaweb开发中的jsp乱码问题 get、post的区别 http协议的图解
jsp servlet面试题总结 jsp 中九大内置对象为: 1. request 请求对象,类型 javax.servlet.ServletRequest,作用域 Request 2. response 响应对象,类型 javax.servlet.SrvletResponse,作用域 Page 3. ...
JSP中解决POST方式和GET方式产生乱码的解决办法
解决jsp提交乱码的问题 可以解决get post 的乱码问题
2.Get和Post的区别 在页面提交数据时,get的数据大小有限制4k,post没有限制,get请求提交的数据会在地址栏显示,post不显示,所以post比get安全. 3.有三台服务器,如果在一台服务器上登陆了这个用户,其他两台就...
2、 异常的处理,可在该方法的代码段中包含3类代码: try 、 catch 和finally代码块。 3、 jsp主要内置对象有: application 、exception 、 pageContext 、 request 、 session 、_____response_____out、...
request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的内容 ...