2014-10-15 2 views
0

Я хочу получить переменную соединения conn для подключения к базе данных. Я хочу получить атрибут, который ранее был установлен в ServletContext, и приведение к конкретному объекту. Это можно сделать в сервлетах но проблема возникает на странице jsp. Обращайтесь к приложению приложения при использовании сценария для получения объекта приложения без использования JSTL.please, помогите мне решить проблему.Получение ServletContext и отбрасывание на конкретный объект в jsp

Я думаю, что ошибка [из журнала сервера]: MyDatabase не может быть разрешен для типа.

код в JSP странице:

MyDatabase mydata=(MyDatabase)getServletContext().getAttribute("Database"); 
Connection conn=mydata.getCon(); 
+0

Является ли MyDatabase классом или jar, содержащим класс в вашем классе? Вы пробовали импортировать его в свой jsp? – SMA

+0

@user Можете ли вы переписать свой пост? Трудно понять, о чем вы говорили. – reporter

+0

MyDatabase - это файл класса, который вызывается из другого java-файла, включая интерфейс ServletContextListener. – Patriotic

ответ

0

Старайтесь избегать скриптлета и использовать JavaServer Pages Standard Tag Library или Expression Language, что является более простым в использовании и менее подвержены ошибкам.

Использование неявного объекта JSP для получения атрибута из определенной области.

${application.myObject} 

Read more...


Использование 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 и передать только результирующий список объектов на стороне клиента. Никогда не смешивайте представление с бизнес-логикой или логикой базы данных. Сделайте все слои отдельно.

+0

Код базы данных находится в сервлете, но я хочу получить к нему доступ с jsp-страницы в качестве объекта (для получения переменной подключения для последующего использования). Как это сделать, не используя jstl. – Patriotic

+0

Зачем нужен объект подключения в JSP. Просто сделайте это в Servlet и передайте результат «List » или что-нибудь в JSP, а затем используйте его. – Braj

+0

прав ... я просто думаю об этом .... большое спасибо. – Patriotic

 Смежные вопросы

  • Нет связанных вопросов^_^