我用intellij IDEA开发了一个系统,oracle数据库,用了hibernate映射,weblogic服务。
本地测试一切正常,发布到网上能进行读取、修改、删除和操作,就是无法添加。
控制台报空指针错误,不解!!!
(本机测试与网络上使用同一数据库)
本地测试一切正常,发布到网上能进行读取、修改、删除和操作,就是无法添加。
控制台报空指针错误,不解!!!
(本机测试与网络上使用同一数据库)
解决方案 »
- 调用天气预报webservices,报错,怎么解决,在线等待,急!!!!
- SSH2整合问题,如何在JSP页面接收action穿过来的list,接收的语句怎么写?
- 有关validator的问题,首先说一下,很难!!!!!
- JAVA开发一个B2C的网站,要做哪些技术方面的准备工作??????????????
- 从两个表中怎么样读关联数据?
- 如何设置一个自己设计的鼠标样式
- 我在广州,现在才1800,包吃住!好可怜!
- JSP文件怎么不能在我的机器上运行?
- 为什么我用request.getCharacterEncoding()得到的总是null
- 关于使用dll的考虑,对比于asp+COM
- 如何在session销毁之前,取得session中的某个已设置的Attribute
- 请问这个页面怎么提交后什么看不见??
import cn.ln.lyfz.nettest.logic.ZyflLogic;
import cn.ln.lyfz.common.PageHelper;
import cn.ln.lyfz.common.Common;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;/**
* 1. setPara()
* 2. save()//添加专业
* 3. update()//修改专业
* 4. delete()//删除专业
* 5. execute()//页面加载时调用此函数
*/
public class Index
{
//接收页面bean返回的request值
private HttpServletRequest request; //接收页面bean返回的response值
private HttpServletResponse response; //接收页面bean返回的session值
private HttpSession session;
/**
* 设置request值并转码
*
* @param request
*/
public void setRequest(HttpServletRequest request)
{
this.request = request;
try
{
//转码
request.setCharacterEncoding("GB2312"); }
catch (Exception e)
{
try
{
//保存错误到error中
session.setAttribute("error", e.getMessage()); //转到错误页
response.sendRedirect(request.getContextPath() + "/error.jsp");
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
} /**
* 设置response值
* @param response
*/
public void setResponse(HttpServletResponse response)
{
this.response = response;
} /**
* 设置session值
* @param session
*/
public void setSession(HttpSession session)
{
this.session = session;
} //专业分类数组
private Zyfl[] objArr; //每页显示的行数
private int pageSize = 10; //当前页号
private int currentPage = 1; //分页帮助类
private PageHelper ph; //业务逻辑
private ZyflLogic logic=new ZyflLogic(); /**
* 得到专业分类数组
* @return
*/
public Zyfl[] getObjArr()
{
return objArr;
} /**
* 设置专业分类数组
* @param objArr
*/
public void setObjArr(Zyfl[] objArr)
{
this.objArr = objArr;
} /**
* 获得分页帮助类
* @return
*/
public PageHelper getPh()
{
return ph;
} /**
* 获得当前页
* @param currentPage
*/
public void setCurrentPage(int currentPage)
{
this.currentPage = currentPage;
}
* 函数名称: 添加新专业
* 函数功能描述: 添加新专业
* 被本函数调用的函数清单:
* 被访问的表:Zyfl
* 被修改的表:Zyfl
* 输入参数说明:
* 输出参数说明:
* 返回值的说明:
* 其它说明:
*/
private void save()throws Exception
{
//获得专业名称
String zymc = request.getParameter("flmc"); //获得该专业下所有工种
Zyfl[] zyArr = logic.getArr(); //循环工种
for(int i=0;i<zyArr.length;i++)
{
//如果工种名称已有
if(zymc.equals(zyArr[i].getZymc()))
{
throw new Exception("该专业已添加过!");
}
}
//初始化专业对象
Zyfl obj=new Zyfl(); //保存专业名称
obj.setZymc(request.getParameter("flmc")); //保存专业对象
logic.save(obj);
} /**
* 函数名称: 修改专业
* 函数功能描述: 修改专业
* 被本函数调用的函数清单:
* 被访问的表:Zyfl
* 被修改的表:Zyfl
* 输入参数说明:
* 输出参数说明:
* 返回值的说明:
* 其它说明:
*/
private void update()throws Exception
{
//初始化专业对象
Zyfl obj=new Zyfl(); //设置专业id
obj.setId(Long.valueOf(request.getParameter("id"))); //设置专业名称
obj.setZymc(request.getParameter("flmc")); //更新专业对象
logic.update(obj);
} /**
* 函数名称: 删除专业
* 函数功能描述: 删除专业
* 被本函数调用的函数清单:
* 被访问的表:Zyfl
* 被修改的表:Zyfl
* 输入参数说明:
* 输出参数说明:
* 返回值的说明:
* 其它说明:
*/
private void delete()throws Exception
{
//获得要删除专业对象
Zyfl obj=logic.get(Long.parseLong(request.getParameter("id"))); //删除该专业
logic.delete(obj);
} /**
* 函数名称: 设置参数
* 函数功能描述: 获得指定页和页面大小
* 被本函数调用的函数清单:
* 被访问的表:
* 被修改的表:
* 输入参数说明:
* 输出参数说明:
* 返回值的说明:
* 其它说明:
*/
private void setPara()throws Exception
{
//获得指定页
if (request.getParameter("head") != null || request.getParameter("previous") != null || request.getParameter("next") != null || request.getParameter("tail") != null || request.getParameter("page") != null)
{
//获得当前页
this.currentPage = Integer.parseInt(request.getParameter("page")); //如果转到首页设置当前页为1
if (request.getParameter("head") != null)
{
this.currentPage = 1;
} //如果转到上页设置当前页为上一页
if (request.getParameter("previous") != null)
{
this.currentPage = this.currentPage - 1;
} //如果转到下页设置当前页为下一页
if (request.getParameter("next") != null)
{
this.currentPage = this.currentPage + 1;
} //如果转到末页设置当前页为末页
if (request.getParameter("tail") != null)
{
this.currentPage = Integer.parseInt(request.getParameter("totalPages"));
} } //改变页面大小
if (request.getParameter("pageSize") != null)
{
this.pageSize = Integer.parseInt(request.getParameter("pageSize"));
}
} /**
* 函数名称: 页面加载时执行 <br>
* 函数功能描述: 设置参数,执行添加,修改,删除,返回给页面一个专业对象数组 <br>
* 被本函数调用的函数清单:setPara(), save(), update(), delete()
* 被访问的表: Zyfl
* 被修改的表:
* 输入参数说明:
* 输出参数说明:
* 返回值的说明:
* 其它说明:
*/
public void execute()throws Exception
{
//设置参数
setPara(); if(request.getParameter("insert")!=null)
{
//添加新专业
save();
} if(request.getParameter("update")!=null)
{
//修改专业
update();
} if(request.getParameter("delete")!=null)
{
//删除专业
delete();
} //获得分页对象
this.ph = new PageHelper(logic.getArr().length,this.pageSize,this.currentPage); //加载专业对象数组
objArr=logic.getPageArr(ph.getPageSize(),ph.getStartRow());
}
}以上是程序运行时执行的UI逻辑,由于不在现场,无法截取错误信息。
只是在添加时报该类java空指针错误,然后打出servlet的行数,没有其它信息了。
String zymc = request.getParameter("flmc");
ZyflLogic logic=new ZyflLogic();
Zyfl obj=new Zyfl();
obj.setZymc(request.getParameter("flmc"));
logic.save(obj);
值对象:
public class Zyfl implements Serializable { private Long id;
private String zymc; public Long getId()
{
return id;
} public void setId(Long id)
{
this.id = id;
} public String getZymc() {
return this.zymc;
} public void setZymc(String zymc) {
this.zymc = zymc;
}}
相关业务逻辑:
....
....
public void save(Zyfl obj) throws Exception
{
Session sess = HibernateUtil.currentSession();
try
{
sess.save(obj);
sess.flush();
}
catch (HibernateException e)
{
throw e;
}
finally
{
HibernateUtil.closeSession();
}
}
....
....
hibernate调用:
public class HibernateUtil { private static final SessionFactory sessionFactory; static
{
try
{
sessionFactory = new Configuration().configure(new HibernateUtil().getClass().getResource("/hibernate.cfg.xml")).buildSessionFactory();
}
catch (HibernateException ex)
{
throw new RuntimeException("Exception building SessionFactory: " + ex.getMessage(), ex);
}
} public static final ThreadLocal session = new ThreadLocal(); public static Session currentSession() throws HibernateException
{
Session s = (Session) session.get();
{
s = sessionFactory.openSession();
session.set(s);
}
return s;
} public static void closeSession() throws HibernateException
{
Session s = (Session) session.get();
session.set(null);
if (s != null)
{
s.close();
}
}
}