java-web - 在jsp开发中,为什么使用getServletContext()方法代替隐含对象application?
本文介绍了java-web - 在jsp开发中,为什么使用getServletContext()方法代替隐含对象application?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
有比较多的方法可以调出ServletContext,哪一种方式更好些?
这是偶然,还是使用这种方法有更多的好处?
见下面代码:
<%@ page import="mypack.*" %>
<%@ page import="java.util.Properties" %>
<%@ page errorPage="errorpage.jsp" %>
<%@ page import="javax.ejb.*, javax.naming.*, javax.rmi.PortableRemoteObject, java.rmi.RemoteException" %>
<%!
private BookDBEJB bookDB;
public void jspInit() {
bookDB =
(BookDBEJB)getServletContext().getAttribute("bookDB"); // 为什么不直接用application?
if (bookDB == null) {
try {
InitialContext ic = new InitialContext();
Object objRef = ic.lookup("java:comp/env/ejb/BookDBEJB");
BookDBEJBHome home = (BookDBEJBHome)PortableRemoteObject.narrow(objRef,
mypack.BookDBEJBHome.class);
bookDB = home.create();
getServletContext().setAttribute("bookDB", bookDB);
} catch (RemoteException ex) {
System.out.println("Couldn't create database bean." + ex.getMessage());
} catch (CreateException ex) {
System.out.println("Couldn't create database bean." + ex.getMessage());
} catch (NamingException ex) {
System.out.println("Unable to lookup home: "+ "java:comp/env/ejb/BookDBEJB."+ ex.getMessage());
}
}
}
public void jspDestroy() {
bookDB = null;
}
public String convert(String s){
try{
return new String(s.getBytes("ISO-8859-1"),"GB2312");
}catch(Exception e){return null;}
}
%>
解决方案
没啥好纠结的,就是同一个对象,你在jsp中有application
对象,但是你在java后端可能直接引用到application
这玩意么,必然要getServletContext()
这篇关于java-web - 在jsp开发中,为什么使用getServletContext()方法代替隐含对象application?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文