使用AJAX技术做一个无页面刷新的会员登录功能--解决中文乱码

前端之家收集整理的这篇文章主要介绍了使用AJAX技术做一个无页面刷新的会员登录功能--解决中文乱码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

题目:

使用AJAX技术做一个无页面刷新的会员登录功能

解决技术:用户名使用中文

代码

  1. <%@ page language="java" contentType="text/html; charset=utf-8"
  2. pageEncoding="utf-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <title>Insert title here</title>
  7. <script type="text/javascript">
  8. function _click(){
  9. var loginname = document.getElementById("loginname").value;
  10. var loginpass = document.getElementById("loginpass").value;
  11. var xmlHttp = new XMLHttpRequest();
  12. var url = "/aWeb/AjaxServlet?loginname="+loginname+"&loginpass="+loginpass;
  13. url = encodeURI(url);
  14. url = encodeURI(url);
  15. xmlHttp.open("POST",url,false);
  16. alert(url);
  17. xmlHttp.onreadystatechange = function() {
  18. if(xmlHttp.readyState == 4 || xmlHttp.status == 200) {
  19. document.getElementById("result").innerHTML = xmlHttp.responseText;
  20. }
  21. };
  22. xmlHttp.send(null);
  23. }
  24. </script>
  25. </head>
  26. <body>
  27. <form action="/aWeb/AjaxServlet" method="post">
  28. 用户名<input type="text" name="loginname" id="loginname" />
  29. <br />
  30. 密码:<input type="text" name="loginpass" id="loginpass" />
  31. <br />
  32. <input type="button" value="提交" onclick="_click()">
  33. </form>
  34. <div id="result"></div>
  35. </body>
  36. </html>


  1. package com.zving.servlet;
  2.  
  3. import java.io.IOException;
  4. import java.net.URLDecoder;
  5. import java.net.URLEncoder;
  6.  
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12. public class AjaxServlet extends HttpServlet {
  13. private static final long serialVersionUID = 1L;
  14.  
  15. @Override
  16. public void doGet(HttpServletRequest req,HttpServletResponse resp)
  17. throws ServletException,IOException {
  18. doPost(req,resp);
  19. }
  20.  
  21. @Override
  22. public void doPost(HttpServletRequest req,IOException {
  23. req.setCharacterEncoding("utf-8");
  24. resp.setContentType("text/html;charset=utf-8;");
  25. String loginname = req.getParameter("loginname");
  26. String loginpass = req.getParameter("loginpass");
  27. String str = URLEncoder.encode(loginname,"utf-8");
  28. str = URLDecoder.decode(str,"utf-8");
  29. System.out.println(loginname + "接收到信息!" + loginpass+str);
  30. resp.getWriter().print("用户:" + loginname + "登陆了!" + str);
  31. }
  32.  
  33. }





解决思路:

方法一:在前台jsp页面中使用encodeURI(url)

在后天servlet类中使用str = URLDecoder.decode(str,"utf-8");

使用一个时发现没有用于是在使用一次。

方法二:tomcat使用高版本,1.7,1.8;jre使用1.7,1.8

在高版本中是可以的。

猜你在找的Ajax相关文章