level 1
咫尺相似
楼主
思路:前台页面是一个简单的登陆form,通过jquery的ajax的插件向后台提交表单内容,后台处理完毕后,返回json字符串,前台处理.
<!-------页面代码---------->
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>JQuery EasyUI</title>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<link rel="stylesheet" type="text/css" href="<%=path%>/js/themes/default/easyui.css" type="text/css">
<link rel="stylesheet" type="text/css" href="<%=path%>/js/themes/icon.css" type="text/css">
<script type="text/javascript" src="<%=path%>/js/jquery-1.7.1.min.js" charset="utf-8"></script>
<script type="text/javascript" src="<%=path%>/js/jquery.easyui.min.js" charset="utf-8"></script>
<script type="text/javascript" src="<%=path%>/js/locale/easyui-lang-zh_CN.js" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var loginInputForm;
$(function(){
loginInputForm = $("#loginAndReg").dialog({
closable : false,
modal : true,
buttons : [
{text:'登陆',handler : function(){
$.ajax({
url : 'loginAction!login.action',
data : $('#loginInputForm').serialize(),
cache : false,
dataType : 'json',
success : function(data){
console.info(data);
if(data.success == true){
loginInputForm.dialog('close');
$.messager.show({
title:'登陆',
msg:'登陆成功。。。。',
timeout:5000,
showType:'slide'
});
}
else{
$.messager.show({
title : '登陆',
msg : '登陆失败,用户名或密码错误!',
timeout : 5000,
showType : 'slide'
});
}
}
});
}},{text: '注册',handler : function(){
$.messager.show({
title : '注册',
msg: '注册模块正在做',
timeout:5000,
showType:'slide'
});
}}]
});
});
</script>
</head>
<body>
<div id="loginAndReg" title="用户登陆" style="width:300px;height: 150px;">
<form method="post" id="loginInputForm">
<table align="center">
<tr>
<th align="right">用户名:</th>
<td><input type="text" name="user.userName"/></td>
</tr>
<tr>
<th align="right">密 码:</th>
<td><input type="password" name="user.userPass"/></td>
</tr>
</table>
</form>
</div>
</body>
</html>
<!-------action代码-------->
package action;
import net.sf.json.JSONObject;
import service.UserService;
import been.UserLogin;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private UserService userService = new UserService();
private UserLogin user;
private String jsonResult;
public String login(){
boolean flag = userService.login(user.getUserName(), user.getUserPass());
String message;
if(flag){
message = "登陆成功!";
}else{
message = "登陆失败,用户名或密码错误。。。";
}
JSONObject json = new JSONObject();
json.accumulate("success", flag);
json.accumulate("msg", message);
jsonResult = json.toString();
return "success";
}
public String getJsonResult() {
return jsonResult;
}
public void setJsonResult(String jsonResult) {
this.jsonResult = jsonResult;
}
public UserLogin getUser() {
return user;
}
public void setUser(UserLogin user) {
this.user = user;
}
}
<!-------struts.xml---------->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" namespace="/" extends="json-default">
<action name="loginAction" class="action.LoginAction">
<result type="json" name="success">jsonResult</result>
</action>
</package>
</struts>
感觉写的很对,但是firebug报了一个错误NetworkError: 500 Internal Server Error,我把action里的JSONObject去掉,改为jsonResult = message,就没有这个错误了,
在前台ajax的回调函数function(data),data能够接收后台穿过来的数据,我想请问这是为什么?Struts2中不能用JSONObject对象吗?纠结好久了。。。。。
2013年12月15日 08点12分
1
<!-------页面代码---------->
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>JQuery EasyUI</title>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<link rel="stylesheet" type="text/css" href="<%=path%>/js/themes/default/easyui.css" type="text/css">
<link rel="stylesheet" type="text/css" href="<%=path%>/js/themes/icon.css" type="text/css">
<script type="text/javascript" src="<%=path%>/js/jquery-1.7.1.min.js" charset="utf-8"></script>
<script type="text/javascript" src="<%=path%>/js/jquery.easyui.min.js" charset="utf-8"></script>
<script type="text/javascript" src="<%=path%>/js/locale/easyui-lang-zh_CN.js" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var loginInputForm;
$(function(){
loginInputForm = $("#loginAndReg").dialog({
closable : false,
modal : true,
buttons : [
{text:'登陆',handler : function(){
$.ajax({
url : 'loginAction!login.action',
data : $('#loginInputForm').serialize(),
cache : false,
dataType : 'json',
success : function(data){
console.info(data);
if(data.success == true){
loginInputForm.dialog('close');
$.messager.show({
title:'登陆',
msg:'登陆成功。。。。',
timeout:5000,
showType:'slide'
});
}
else{
$.messager.show({
title : '登陆',
msg : '登陆失败,用户名或密码错误!',
timeout : 5000,
showType : 'slide'
});
}
}
});
}},{text: '注册',handler : function(){
$.messager.show({
title : '注册',
msg: '注册模块正在做',
timeout:5000,
showType:'slide'
});
}}]
});
});
</script>
</head>
<body>
<div id="loginAndReg" title="用户登陆" style="width:300px;height: 150px;">
<form method="post" id="loginInputForm">
<table align="center">
<tr>
<th align="right">用户名:</th>
<td><input type="text" name="user.userName"/></td>
</tr>
<tr>
<th align="right">密 码:</th>
<td><input type="password" name="user.userPass"/></td>
</tr>
</table>
</form>
</div>
</body>
</html>
<!-------action代码-------->
package action;
import net.sf.json.JSONObject;
import service.UserService;
import been.UserLogin;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private UserService userService = new UserService();
private UserLogin user;
private String jsonResult;
public String login(){
boolean flag = userService.login(user.getUserName(), user.getUserPass());
String message;
if(flag){
message = "登陆成功!";
}else{
message = "登陆失败,用户名或密码错误。。。";
}
JSONObject json = new JSONObject();
json.accumulate("success", flag);
json.accumulate("msg", message);
jsonResult = json.toString();
return "success";
}
public String getJsonResult() {
return jsonResult;
}
public void setJsonResult(String jsonResult) {
this.jsonResult = jsonResult;
}
public UserLogin getUser() {
return user;
}
public void setUser(UserLogin user) {
this.user = user;
}
}
<!-------struts.xml---------->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" namespace="/" extends="json-default">
<action name="loginAction" class="action.LoginAction">
<result type="json" name="success">jsonResult</result>
</action>
</package>
</struts>
感觉写的很对,但是firebug报了一个错误NetworkError: 500 Internal Server Error,我把action里的JSONObject去掉,改为jsonResult = message,就没有这个错误了,
在前台ajax的回调函数function(data),data能够接收后台穿过来的数据,我想请问这是为什么?Struts2中不能用JSONObject对象吗?纠结好久了。。。。。