`
sq1228
  • 浏览: 80670 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

jsp中get和post方法的中文问题总结

    博客分类:
  • JAVA
阅读更多

在项目中,我们经常遇到需要在jsp页面切换中传递中文字符。这主要有两种方式。 
URL方式,例如:http://website/test1.jsp?act=add&type=苹果&param=%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=苹果&param=%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);
        }

    }
}

//经测试可运行

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics