public class UserDaoImpl implements UserDao {
@Override
public User login(User user) {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = BaseDao.getCon();
String sql = "select * from user where name=? and password=?";
ps = con.prepareStatement(sql);
ps.setString(1, user.getName());
ps.setString(2, user.getPassword());
rs = ps.executeQuery();
User users;
if (rs.next()) {
users = new User();
System.out.println();
users.setId(rs.getInt("id"));
users.setName(rs.getString("name"));
users.setPassword(rs.getString("password"));
users.setEmail(rs.getString("email"));
users.setPhone(rs.getString("phone"));
users.setMoney(rs.getString("money"));
return users;
} else {
return null;
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
public boolean register(User user) {
String sql = "insert into user values(0,?,?,?,?,?) ";
List<Object> list = new ArrayList<Object>();
list.add(user.getName());
list.add(user.getPassword());
list.add(user.getEmail());
list.add(user.getPhone());
list.add(user.getMoney());
boolean flag = BaseDao.addUpdateDelete(sql, list.toArray());
if (flag) {
return true;
} else {
return false;
}
}
public ArrayList<User> query() {
Connection con = null;
ArrayList<User> barArr = new ArrayList<User>();
try {
con = BaseDao.getCon();
PreparedStatement stmt = con.prepareStatement("select * from user");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
User bar = new User();
bar.setName(rs.getString("name"));
bar.setMoney(rs.getString("money"));
barArr.add(bar);
}
con.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return barArr;
}
}
@WebServlet("/user/userlogin")
public class UserLoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
User user = new User();
// 获取login.jsp页面提交的账号和密码
String name = request.getParameter("name");
String password = request.getParameter("password");
String money=request.getParameter("money");
// 测试数据
System.out.println(name + " " + password+" "+money);
// 获取login.jsp页面提交的账号和密码设置到实体类User?
user.setName(name);
user.setPassword(password);
HttpSession session = request.getSession();
// 引入数据交互层
UserDao dao = new UserDaoImpl();
User us = dao.login(user);
// 测试返回的值
System.out.println(us);
if (us != null) {
session.setAttribute("user", user);
request.getRequestDispatcher("/index/echarts.jsp").forward(request, response);
// request.setAttribute("info", "登录成功");
} else {
request.setAttribute("info", "登录失败");
request.getRequestDispatcher("/index/info.jsp").forward(request, response);
}
UserDaoImpl barDao = new UserDaoImpl();
ArrayList<User> barArr = barDao.query();
response.setContentType("text/html; charset=utf-8");
JSONArray json = JSONArray.fromObject(barArr);
System.out.println("得到的数据:"+json.toString());
PrintWriter writer = response.getWriter();
writer.println(json);
writer.flush();
writer.close();
}
}
public class BaseDao {
private static String driver;
private static String url;
private static String user;
private static String password;
private static String money;
static {
driver = ResourceBundle.getBundle("db").getString("driver");
url = ResourceBundle.getBundle("db").getString("url");
user = ResourceBundle.getBundle("db").getString("user");
password = ResourceBundle.getBundle("db").getString("password");
}
public static Connection getCon() throws ClassNotFoundException, SQLException {
Class.forName(driver);
System.out.println("测试加载数据库成功");
Connection con = DriverManager.getConnection(url, user, password);
System.out.println("测试数据库连接成功");
return con;
}
public static void close(Connection con, PreparedStatement ps, ResultSet rs) {
if (rs != null) {// 关闭
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static boolean addUpdateDelete(String sql, Object[] arr) {
Connection con = null;
PreparedStatement ps = null;
try {
con = BaseDao.getCon();// 第一步 :连接数据库的操作
ps = con.prepareStatement(sql);// 第二步:预编译
// 第三步:设置值
if (arr != null && arr.length != 0) {
for (int i = 0; i < arr.length; i++) {
ps.setObject(i + 1, arr[i]);
}
}
int count = ps.executeUpdate();// 第四步:执行sql语句
if (count > 0) {
return true;
} else {
return false;
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
}
<%@page import="org.apache.catalina.connector.Request"%>
<%@ 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" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="org.apache.catalina.connector.Request"%>
<%@ 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" "http://www.w3.org/TR/html4/loose.dtd">
老哥们需要补什么代码 说一声 我在线等
之前我也碰到过类似的情况我的问题是ajax的type和实际RequestMapping中的method不一致导致,虽然在network中能看到这次请求是200但是老是进error方法
dataType 是 json 类型,注意返回的JSON数据是否是严格的JSON格式
这里有了json.tostring应该 可以确定是json类型吧 还有可能啥原因呢 需要啥代码我在线补
你方法返回的不是个实体吗?所以在显示的时候不应该是result.实体[i].name吗,你可以先在function里面弹窗看返回信息有没有接收到
dataType: 'text'
再用eval('('+result+')');转换成json试试,如果转换不成功 ,说明json格式有问题
var data = eval('('+result+')');
去bar.do中看看是否进来了,如果进来了,就是后台数据的问题,要是没有进来,就是路径的问题
在你的请求的方法上加个断点,看是否请求到这个方法了
打个断点试一下有没有进后台。
看看是不是接口有问题 多写个error:function(e){alert(e)}
手动在浏览器中访问试试,浏览器测试的时候,可以将编码改为text看看输出是否正确。另外,如果获取的是json,则服务端看看编码是否正确。不会用jsp,只能说这么多。
1.有可能是你这个data里面的name参数与后台所需要的参数名没能一致;2.想问下进入error函数里面打印的errorMsg是报什么类型的错误
返回端要支持callback才行的,不然拿到数据了,照样无法进入success方法的
是没接收到后面传过来的值吗?
照你返回的json串来看,你应该是请求一个对象的数据?如果是的话,那就没必要去遍历。比如说你现在function()括号里面的是result,你要获取里面的name值,那么你就直接,result.name。就行了。
public class UserLoginServlet extends HttpServlet
里面的倒数第三行
writer.println(json);
改为
writer.print(json);试一下
你将dataType 改成 text, 在success方法alert(result)试试看, 不行的话再将async 改为 true, 如果不弹就是Ajax的问题了
bar.do 加上详细IP地址