页面用AJAX传递数据时
- function login(uname,pwd) {
- var XMLHttpRequestObject = false;
- if(window.XMLHttpRequest) {
- XMLHttpRequestObject = new XMLHttpRequest();
- } else {
- if(window.ActiveXObject) {
- XMLHttpRequestObject = new ActiveObject("Microsoft.XMLHTTP");
- }
- }
- var uri = "uname=" + uname.value + "&pwd=" + pwd.value;
- var url = "login.do?method=login";
- uri = encodeURI(encodeURI(uri));
- if(XMLHttpRequestObject) {
- XMLHttpRequestObject.open("POST",url,true);
- XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
- XMLHttpRequestObject.onreadystatechange = function () {
- if(XMLHttpRequestObject.readyState == 4) {
- if(XMLHttpRequestObject.status == 200) {
- var text = XMLHttpRequestObject.responseText;
- if(text == "error") {
- alert("输入的用户名或密码错误,请重新输入");
- uname.value="";
- pwd.value="";
- }else {
- alert("欢迎回来");
- }
- }
- }
- };
- XMLHttpRequestObject.send(uri);
- }
- }
JAVA Action里处理代码
- public ActionForward login(ActionMapping mapping, ActionForm form,
- HttpServletRequest req, HttpServletResponse res) throws Exception {
- String uname = URLDecoder.decode(req.getParameter("uname"),"UTF-8");
- String pwd = URLDecoder.decode(req.getParameter("pwd"),"UTF-8");
- pwd = md5.getMD5ofStr(pwd);
- UserVo userVo = new UserVo(uname, pwd);
- UserVo findVo = (UserVo)loginServiceImpl.findUserInfo(userVo);
- String message = null;
- if(findVo != null) {
- message = "sucess";
- }else {
- message = "error";
- }
- res.setContentType("text/xml;charset=UTF-8");
- res.setHeader("Cache-Control", "no-cache");
- PrintWriter pw = res.getWriter();
- pw.write(message);
- log.info("message==" + message);
- pw.close();
- return null;
- }
uri = encodeURI(encodeURI(uri));这里两次编码是为了解决中文乱码的问题,因为script的编码和java的解码不对应,会导致乱码,所有这里要两次编码
最后在Action里接收数据时一次解码,URLDecoder.decode(req.getParameter("uname"),"UTF-8");这样得到的是正常的正文!