我想得到一个连接变量conn来连接数据库。我想要检索一个先前在ServletContext中设置的属性并将其转换为特定的对象。我可以在servlet中执行此操作但是jsp page.how中出现问题使用scriptlet获取应用程序对象时不使用JSTL来转换应用程序对象。请帮助我解决问题。
我认为错误是[来自服务器日志]:MyDatabase无法解析为某种类型。
jsp页面中的代码:
MyDatabase mydata=(MyDatabase)getServletContext().getAttribute("Database");
Connection conn=mydata.getCon();
答案 0 :(得分:0)
尽量避免使用 Scriplet ,并使用更易于使用且不易出错的JavaServer Pages Standard Tag Library或Expression Language。
使用隐式JSP对象从特定范围获取属性。
${application.myObject}
使用SQL Tag Library提供JSTL SQL标记来访问JSP中的数据库。
示例代码:
<sql:setDataSource var="dataSource"
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;databaseName=test"
user="" password="" />
<sql:query dataSource="${dataSource}"
sql="SELECT username from test where username=?" var="result">
<sql:param value="${param.username}"></sql:param>
</sql:query>
<table width="100%" height="600" border="1" align="center">
<c:forEach var="row" items="${result.rows}">
<tr>
<td><b>${row.username}</b></td>
</tr>
</c:forEach>
</table>
注意:最好在Servlet中移动数据库代码,并将生成的对象List传递给客户端。切勿将视图与业务或数据库逻辑混合。分别制作所有图层。