为什么我在new时候会卡住
哀歌 2017-03-17 07:35:16 首先我是有三个数据库表,用户表,图书表,借阅表。我在from表单提交的时候会在new对象的时候卡住不动,有时候是第一个new的时候有时候是第二个或第三个,是不是我代码有问题。我用的是servlet写的,没有用框架。我实现的功能也很简单,就是提交表单时候,给用户表和图书表传入参数,查询俩张表,放入实例对象里,然后将实例对象插到借阅表中。为了减少这种卡机情况我还特意在jsp中接受传入的两个request,在jsp中执行插入表操作。
一下是表单的代码
!-- 借阅表 -->
<div class="askfrom" style="font-size:30px">
<form action="ask.do" method="post" onsubmit="return validate_channel_info(this);" name="channelform">
借阅图书:<input type="text" id="b" name="book"> <span id="ts1">*请输入借阅书名</span><br>
<p id="error"> ${bookerror }</p>
归还日期:<input id="createdatetimeEnd" name="createdatetimeEnd" style="width:120px;" onFocus="WdatePicker({readOnly:true,dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'%y-%M-{%d+1}'})" /><br>
<p id="error">${error }</p>
借阅人:<input type="text" id="uname" name="name"> <span id="ts2">*请输入该账号注册姓名</span><br>
<p id="error">${usererror }</p>
身份证号码:<input id="icade" name="cade" > <span id="ts3">*身份证号与借阅人保持一致</span><br>
<p id="error">${cadrerror }</p>
手机号:<input id="phonee" name="phone"> <span id="ts">*请输入正确手机号</span><br>
<p id="error">${error }</p>
<input type="submit" value="提交" > <input type="reset" value="重置">
</form>
</div>
</div>
dao方法
//查询图书所有信息
public books findbook(String book){
Connection conn=null;
try {
conn=DBUtil.getConnection();
String sql="select * from books where name=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, book);
ResultSet rs=ps.executeQuery();
books b=new books();
while(rs.next()){
b.setCost_id(rs.getInt("cost_id"));//图书id
b.setClassify(rs.getString("classify"));//分类
b.setName(rs.getString("name"));//书名
b.setAuthor(rs.getString("author"));//作者
b.setNum(rs.getInt("num"));//数量
b.setAddress(rs.getString("address"));//书架位置
return b;
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtil.close(conn);
}
return null;
}
//查询用户信息
public userss finduser(String user){
Connection conn=null;
try {
conn=DBUtil.getConnection();
String sql="select * from userss where username=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, user);
ResultSet rs=ps.executeQuery();
userss u=new userss();
if(rs.next()){
u.setAdmincode(rs.getString("admincode"));//账号
u.setPwd(rs.getString("pwd"));//密码
u.setUsername(rs.getString("username"));//真实姓名
u.setIdcard(rs.getString("idcard"));//身份证
u.setPhonenumber(rs.getString("phonenumber"));//电话
u.setEmail(rs.getString("email"));//邮箱
u.setFamilyaddress(rs.getString("familyaddress"));//家庭住址
return u;
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//向借阅表插入所有信息
public void save(borrowbooks b){
Connection conn=null;
try {
conn=DBUtil.getConnection();
String sql="insert into borrowbooks values(borrowbooks_seq.nextval,?,?,'1',?,?,?,?,?,?,sysdate,?,null)";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, b.getClassify());
ps.setString(2, b.getName());
ps.setString(3, b.getAdmincode());
ps.setString(4, b.getUsername());
ps.setString(5, b.getIdcard());
ps.setString(6, b.getEmail());
ps.setString(7, b.getFamilyaddress());
ps.setString(8, b.getPhonenumber());
ps.setTimestamp(9, b.getPredicttime());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtil.close(conn);
}
}
servlet的代码
@Override
protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String ser=req.getServletPath();
System.out.println(ser);
if("/ask.do".equals(ser)){
ask(req,res);
}else if("/see.do".equals(ser)){
see(req,res);
}
}
protected void ask(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException ,NullPointerException{
req.setCharacterEncoding("UTF-8");
res.setContentType("text/html;charset=utf-8");
String uname=req.getParameter("name");//获取用户名
String cade=req.getParameter("cade"); //获取身份证号
String book=req.getParameter("book");//书名
String phone=req.getParameter("phone");//手机号
String createdatetimeEnd=req.getParameter("createdatetimeEnd"); //input 归还日期
Timestamp ts=new Timestamp(System.currentTimeMillis());
ts=Timestamp.valueOf(createdatetimeEnd);
Booksdao bd=new Booksdao();
System.out.println(book);
books b=bd.findbook(book);
System.out.println(b);
Userssdao udao=new Userssdao();
System.out.println(udao);
userss u=udao.finduser(uname);
System.out.println(u);
if(b==null){
System.out.println("没有此书");
req.setAttribute("bookerror", "没有此书");
req.getRequestDispatcher("ask.jsp").forward(req, res);
}else if(u==null){
System.out.println("没有用户");
req.setAttribute("uesrerror", "没有该用户");
req.getRequestDispatcher("ask.jsp").forward(req, res);
}else if(cade.equals(u.getIdcard())){
System.out.println(u.getIdcard());
req.setAttribute("carderror", "身份证与用户不匹配");
req.getRequestDispatcher("ask.jsp").forward(req, res);
}else{
req.setAttribute("user", u);
req.setAttribute("book", b);
req.setAttribute("phone",phone);
req.setAttribute("ts",ts);
System.out.println("ok");
req.getRequestDispatcher("askok.jsp").forward(req, res);
}
}
Jsp成功跳转页面的代码
<%@page import="java.sql.Timestamp"%>
<%@page import="entity.borrowbooks"%>
<%@page import="dao.Borrowdao"%>
<%@page import="entity.userss"%>
<%@page import="entity.books"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>操作成功!</title>
</head>
<body>
<div style="position:relative;">
<div style="position:absolute;width: 400px;
left: 50%;
margin-left: -200px;">
<img src="image/getOK.jpg" style="width:500px; height:500px;">
<% books b=(books)request.getAttribute("book");
userss u=(userss)request.getAttribute("user");
String phone=(String)request.getAttribute("phone");
Timestamp ts=(Timestamp)request.getAttribute("ts");
Borrowdao bdao=new Borrowdao();
borrowbooks bbs=new borrowbooks();
bbs.setClassify(b.getClassify());
bbs.setName(b.getName());
bbs.setNum(b.getNum());
bbs.setAdmincode(u.getAdmincode());
bbs.setUsername(u.getUsername());
bbs.setIdcard(u.getIdcard());
bbs.setFamilyaddress(u.getFamilyaddress());
bbs.setPhonenumber(phone);
bbs.setPredicttime(ts);
bdao.save(bbs);
bdao.succeedBorrow(b.getName());
%>
</div>
</div>
</body>
</html>