当前位置: 代码迷 >> J2EE >> 2015小弟我跪求各位,为小弟我解惑!@#¥%?|}+——(*&%…
  详细解决方案

2015小弟我跪求各位,为小弟我解惑!@#¥%?|}+——(*&%…

热度:402   发布时间:2016-04-17 23:24:36.0
2015我跪求各位,为我解惑!@#¥%?|}+——(*&%……
这是一个登陆注册的小例子,问题好像出在json,或者在向数据库请求数据的过程中有问题,反正就是返不回来相关的信息
比如如果用户名密码输入错误应该返回一句话,这句话我在login实体类方法中定义了,可就是回不来
2015我跪求各位,为我解惑
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<script type="text/javascript" src="<%=path %>/js/jquery-1.8.2.min.js"></script>
<script type="text/javascript">
   function doLogin(type){
       var name = $("#loginName").attr('value');
       var pw = $("#loginPassword").attr('value');
       var url = 'login.action?user.username= '+name+' &user.password= '+pw;
       //alert("执行");
       if(name!=null && name!='' && pw!=null && pw!=''){
       $.ajax({
       url:url,
       type:"post",
       dataType:"json",
       async:true,
       beforeSend:function(data){
       $("#loginButton").attr("disabled",true);
       }, 
       success:function(data){
       alert(data);
           if(data.user!=null){
       $("#msg").html("&nbsp;<br/>");
       var html="欢迎&nbsp; "+data.user.username+"&nbsp;nbsp;<label><input type='button' name='search' value='退出' onclik='document.location=\"logout.action\"'></label>";
       $("#topLoginDiv").html(html);
       }else{
       $("#msg").html(data.msg);
       $("#msg").css("color","red");
       }  
       $("#loginButton").attr("disabled",false);
       }
           
       });
       }else{
       alert("请输入用户名或密码!");
       }
      }          
</script>
</head>
<body>
<div id="header" class="wrad">
   <div id="logo">*****</div>
</div>
<div align="right" style="display: inline">
<div id="topLoginDiv">
用户名:&nbsp;
<s:textfield name="user.name" id="loginName" required="true"
size="15" />
&nbsp; 密&nbsp;&nbsp;码:&nbsp;
<s:password name="user.password" id="loginPassword" required="true"
size="15" />
<label class="ui-green"><input type="button" name="loginButton" id="loginButton" value="登陆" onclick="doLogin()" />
</label>

<label class="ui-green"><input type="button"
name="loginButton" id="loginButton" value="注册"
onclick='document.location="<%=path %>/pages/register.jsp"' />
</label> 

<label class="ui-green"><input type="button" name="search"
value="发布信息" /></label>
</div>
<div id="msg"></div>
</div>
</body>
</html>

====================struts 2的
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.ui.theme" value="simple" /><!-- 设置常量改变前台页面的输出格式 -->

    <package name="house-json" namespace="/" extends="json-default">
      <action name="login" class="com.pb.web.action.UserAction" method="login">
            <result type="json"></result>
             <result name="login" type="json"></result>
      </action>
     
    </package>
</struts>
=================Action的
public class UserAction extends BaseAction {
private IUserServiceImpl service=new IUserServiceImpl();
private HouseUser user;
private String msg;

public String login(){
if (user!=null) {
Map<String,Object> map=service.login(user);
    user=(HouseUser)map.get(user);
    if (user!=null) {
session.put(Constant.LOGIN_USER,user);
msg="true";
return SUCCESS;
}else {
msg=(String)map.get(msg);

}
}
return LOGIN;
}

public HouseUser getUser() {
return user;
}
public void setUser(HouseUser user) {
this.user = user;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}

}
=========================login实体类方法的
public class IUserServiceImpl implements IUserService {
private IUserDao dao = new UserDaoimpl();


public Map<String, Object> login(HouseUser user) {
Map<String,Object> map=new HashMap<String, Object>();
List list = dao.findByProperty("HouseUser", "user", user.getUsername());

if (list != null && list.size() > 0) {
HouseUser loginUser = (HouseUser) list.get(0);
if (user.getPassword() != null
&& user.getPassword().trim().equals(loginUser.getPassword())) {
map.put("user",loginUser);

            }else {
            
             map.put("msg","用户名或密码不正确");
}
}else {

map.put("msg","用户名不存在");
}
       return map;
}

@Override
public boolean doRegister(HouseUser user) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean validate(String name) {
// TODO Auto-generated method stub
return false;
}

@Override
public HouseUser getUserById(Integer id) {
// TODO Auto-generated method stub
return null;
}

}
================这是调用的 findByProperty 方法
public List<T> findByProperty(String classname, String propertyName,Object value) {

try {
String queryString = "from "+ classname +" as u where u." + propertyName
+ "= ?";
Query queryObject = getSession().createQuery(queryString);
queryObject.setParameter(0, value);

Iterator it=queryObject.iterate();
while (it.hasNext()) {
HouseUser hu=(HouseUser) it.next();
System.out.println(hu.getId()+" "+hu.getUsername());
}

return queryObject.list();
} catch (RuntimeException re){
throw re;
} finally {
closeSession();
}
//return null;
}
------解决思路----------------------
太长了 关键代码给出来先 20分要读这么一大堆代码。。。
------解决思路----------------------
你应该把你需要返回的数据渲染成为json格式之后返回给前台,拿你的Map来举例子吧

String json=convert2Json(map);
Printer print=response.getPrinter();
print.out(json);
pring.close()

大概就是这样的了渲染成Json,你可以使用第三方开源的,比如说json-lib,fastJson,或者是Gson
------解决思路----------------------
打错了,是
Writer out = response.getWriter();
  相关解决方案