17528

Java Servlet та JSP

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота №2 Тема: Java Servlet та JSP. Мета: Навчитись створювати та виконувати Java Servlet та JSPсторінки всередині серверу Tomcat. Хід роботи: Теоретичні відомості: Сервлет Javaоб’єкт що працює всередині спеціальної програми сервлетконтейнера і застосовується

Украинкский

2013-07-04

86 KB

20 чел.

Лабораторна робота №2

Тема: Java Servlet та JSP.

Мета: Навчитись створювати та виконувати Java Servlet та JSP-сторінки всередині серверу Tomcat.

Хід роботи:

Теоретичні відомості:

СервлетJava-об’єкт, що працює всередині спеціальної програми сервлет-контейнера і застосовується для динамічного генерування даних. Кожен сервлет описується в окремому класі, який реалізує інтерфейс Servlet. В більшості сервлети використовуються для динамічного генерування Web-сторінок. В цьому випадку сервлет-контейнер повинен бути зв’язаний з Web-сервером (або можна сказати, Web-сервер повинен підтримувати роботу з сервлетами). Взаємодія сервлетів з клієнтами реалізована згідно із парадигмою запит-відповідь. Сервлети, що генерують Web-сторінки, працюють за протоколом HTTP (є HTTP-сервлетами). Для таких сервлетів існує абстрактний клас HttpServlet, від якого розробникам пропонується успадковувати свої сервлети. Такі сервлети є альтернативами таких технологій, як CGI, ISAPI, PHP, Perl тощо.

Схема роботи сервлету:

  1.  Клієнт (наприклад, Web-броузер), при виконанні користувачем певних дій на web-сторінці, надсилає HTTP запит на web-сервер.
  2.  Web-сервер отримує запит і, визначивши, що запит іде до сервлета, передає його контейнеру сервлетів. Контейнер сервлетів може виконуватись в тому ж самому процесі, що і web-сервер, в окремому процесі на тій же системі, що і web-сервер, або взагалі на іншій системі.
  3.  Контейнер сервлетів з'ясовує, який сервлет слід викликати, виходячи з інформації про наявні сервлети, та викликає його, передаючи в якості параметрів об'єкти запиту та відповіді.
  4.  Сервлет використовує об'єкт запиту для отримання інформації про віддаленого користувача, параметри HTTP запиту, тощо. Сервлет виконує запрограмовані в ньому дії та надсилає результати роботи через об'єкт відповіді.
  5.  Після того, як сервлет припиняє обробку запиту, контейнер сервлетів перевіряє коректність відправки відповіді та повертає управління до web-сервера, який, в свою чергу, пересилає відповідь клієнту.

JSP

Технологія Java Server Pages (JSP) є складовою частиною єдиної технології створення програм на основі технології J2EE з використанням web-інтерфейсу. JSP - це альтернативна технології Java Servlet методика розробки програм, що динамічно генерують відповідь на ті або інші запити клієнта. Перш ніж JSP документ буде використаний, спеціальна процедура перетворить його у відповідний сервлет. У свою чергу, сервлет, як правило, пишеться на мові Java і реалізує певний інтерфейс. Далі, сервлет також не є самостійною програмою і функціонує, тільки будучи поміщеним у відповідний web-контейнер. Web-контейнер забезпечує обмін даними між сервлетом і клієнтами, бере на себе виконання таких функцій, як створення програмного середовища для функціонування сервлета, ідентифікацію і авторизацію клієнтів, організацію сесії для кожного з них тощо.

Як правило, JSP сторінка зберігається в окремому файлі з розширенням .jsp. Велика частина вмісту JSP сторінки перетвориться в сервлеті в набір інструкцій out.println(). Приклад JSP сторінки:

Лістинг програми:

Book.java

package org.my.serv;

public class Book {

private int id;

private String nam;

private String avtor;

private String vudav;

private int god;

 

   public int getId() {

 return id;

}

public void setId(int id) {

 this.id = id;

}

public String getNam() {

 return nam;

}

public void setNam(String nam) {

 this.nam = nam;

}

public String getAvtor() {

 return avtor;

}

public void setAvtor(String avtor) {

 this.avtor = avtor;

}

public String getVudav() {

 return vudav;

}

public void setVudav(String vudav) {

 this.vudav = vudav;

}

public int getGod() {

 return god;

}

public void setGod(int god) {

 this.god = god;

}

}

Cars.java

package org.my.serv;

public class Cars {

private int id;

private String namecars;

private String colir;

private String probeg;

 

public String getColir() {

 return colir;

}

public void setColir(String colir) {

 this.colir = colir;

}

public int getId() {

 return id;

}

public void setId(int id) {

 this.id = id;

}

public String getNamecars() {

 return namecars;

}

public void setNamecars(String namecars) {

 this.namecars = namecars;

}

public String getProbeg() {

 return probeg;

}

public void setProbeg(String probeg) {

 this.probeg = probeg;

}

}

StartServ.java

package org.my.serv;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

/**

* Servlet implementation class MyServlet

*/

public class StartServ extends HttpServlet {

private static final long serialVersionUID = 1L;

List collection = new ArrayList();

ResultSet rs = null;

 

   /**

    * Default constructor.

    */

   public StartServ() {

    }

/**

 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

 */

protected void doGet(HttpServletRequest request,

  HttpServletResponse response) throws ServletException, IOException {

 String tableName = request.getParameter("tableName");

 Statement sm = null;

 Connection conn = null;

 HttpSession session = request.getSession();  

 System.out.println("--------"+tableName);

 PrintWriter out = response.getWriter();

 response.setContentType("text/html");

 out.println("<HTML><HEAD><TITLE>FirstServlet</TITLE></HEAD>");

 

 try {

  Class.forName("com.mysql.jdbc.Driver");

  conn = DriverManager.getConnection(

    "jdbc:mysql://localhost/book", "root", "admin");

  sm = conn.createStatement();

  ResultSet executeQuery = sm.executeQuery("SELECT * FROM "

    + tableName);

  rs = sm.getResultSet();  

  int col = rs.getMetaData().getColumnCount();

  while (rs.next()) {

   if(tableName.intern()=="Book"){

    tableBook();

   }else{

       tableCars();  

   }

  }

  session.setAttribute("books", collection);

  //session.setAttribute("tableName", tableName);

  rs.close();

  sm.close();

 } catch (ClassNotFoundException e) {

  e.printStackTrace();

 } catch (SQLException e) {

  e.printStackTrace();

 }

 String sess = request.getRequestURI();

 RequestDispatcher dispatcher = getServletContext()

   .getRequestDispatcher("/ShowDBJSP.jsp");

 dispatcher.forward(request, response);

}

   

private void tableCars() throws SQLException {

 Cars car= new  Cars();

 car.setId(rs.getInt("id"));

 car.setNamecars(rs.getString("namecars"));

 car.setColir(rs.getString("colir"));

 car.setProbeg(rs.getString("probeg"));

 collection.add(car);

 // TODO Auto-generated method stub

}

private void tableBook() throws SQLException {

 Book book= new  Book();

 book.setId(rs.getInt("id"));

 book.setNam(rs.getString("nam"));

 book.setAvtor(rs.getString("avtor"));

 book.setVudav(rs.getString("vudav"));

 book.setGod(rs.getInt("god"));

 collection.add(book);

 // TODO Auto-generated method stub

}

/**

 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

 */

protected void doPost(HttpServletRequest request,

  HttpServletResponse response) throws ServletException, IOException {

 // TODO Auto-generated method stub

 doGet(request,response);

}

}

Book.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping

  PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>

  <class name="org.my.serv.Book" table="book">

     <id name="id" type="int" column="id">

        <generator class="increment"/>

     </id>

     <property name="nam" type="java.lang.String" not-null="true" column="nam"/>

     <property name="avtor" type="java.lang.String"  column="avtor"/>

  <property name="vudav" type="java.lang.String"  column="vudav"/>

     <property name="god" type="int" column="god"/>

  </class>

</hibernate-mapping>

Cars.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping

  PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>

  <class name="org.my.serv.Cars" table="cars">

     <id name="id" type="int" column="id">

        <generator class="increment"/>

     </id>

     <property name="namecars" type="java.lang.String" not-null="true" column="namecars"/>

     <property name="colir" type="java.lang.String"  column="colir"/>

  <property name="probeg" type="java.lang.String"  column="probeg"/>

  </class>

</hibernate-mapping>

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

   <property name="connection.driver_class">

 com.mysql.jdbc.Driver

   </property>

   <property name="connection.url">

      jdbc:mysql://localhost:3306/book?characterEncoding=utf8

   </property>

   <property name="connection.username">root</property>

   <property name="connection.password">admin</property>

   <property name="connection.pool_size">10</property>

   <property name="show_sql">true</property>

   <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

   <property name="useUnicode">true</property>

   <property name="hibernate.hbm2ddl.auto">update</property>

   <!-- Mapping files -->

      <mapping resource="org/my/serv/Book.hbm.xml"/>

   <mapping resource="org/my/serv/Cars.hbm.xml"/>     

</session-factory>

</hibernate-configuration>

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Labtwo</display-name>

<servlet>

 <description>

 </description>

 <display-name>StartServ</display-name>

 <servlet-name>StartServ</servlet-name>

 <servlet-class>org.my.serv.StartServ</servlet-class>

</servlet>

 

<servlet-mapping>

 <servlet-name>StartServ</servlet-name>

 <url-pattern>/StartServ</url-pattern>

</servlet-mapping>

<servlet>

 <servlet-name>ShowDBJSP</servlet-name>

 <jsp-file>/ShowDBJSP</jsp-file>

</servlet>

 

<servlet-mapping>

 <servlet-name>ShowDBJSP</servlet-name>

 <url-pattern>/ShowDBJSP</url-pattern>

</servlet-mapping>

 

<welcome-file-list>

 <welcome-file>index.html</welcome-file>

</welcome-file-list>

 

</web-app>

ShowDBJSP.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

   pageEncoding="ISO-8859-1"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!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=ISO-8859-1">

<title>StartJSP</title>

</head>

<body>

<center>

<c:if test="${tableName=='Book'}">

<table border=4>

<c:forEach var="books" items="${books}">

 <tr>

  <td>${books.id}</td>

  <td>${books.nam}</td>

  <td>${books.avtor}</td>

  <td>${books.vudav}</td>

  <td>${books.god}</td>

 </tr>

</c:forEach>

</table>

</c:if>

<c:if test="${tableName=='Cars'}">

<table border=4>

<c:forEach var="books" items="${books}">

 <tr>

  <td>${books.id}</td>

  <td>${books.namecars}</td>

  <td>${books.colir}</td>

  <td>${books.probeg}</td>

 </tr>

</c:forEach>

</table>

</c:if>

</center>

</body>

</html>

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title>Laboratorna robota 2</title>

</head>

<body>

<form name="form1" method="post" action="StartServ">

<left>Select table!<p>

  <label>

    <select name="select" size="1" id="select">

      <option>book</option>

      <option>cars</option>

    </select>

  </label>

</p>

 <p>

   <input type="submit" name="button" value="Ok" />

 </p></left>

</form>

</body>

</html>

labtri.xml

<?xml version="1.0" encoding="UTF-8"?>

<Context

 docBase="C:\MyWorks\JAVA\LABS_works\Labtwo\WebContent"

 debug="0"

 privileged="true">

</Context>


Результати роботи:

 

Висновок.

В лабораторній роботі було створено та використано Java Servlet та JSP-сторінки всередині серверу Tomcat. Було створено программу з Web – інтерфейсом.


 

А также другие работы, которые могут Вас заинтересовать

63933. Проблем рынка пластиковых карт в России на примере ОАО «РГС Банк» 493.5 KB
  Теоретические аспекты функционирования платёжных систем на основе пластиковых карт. Правовое регулирование деятельности кредитных организаций в области пластиковых карт. Виды пластиковых карт и их характеристика.
63934. Корупція на міжнародному рівні та на рівні законодавства України 176.78 KB
  Мета і завдання дослідження полягає у тому, щоб на основі вивчення, аналізу й узагальнення новітнього законодавства у сфері протидії корупції, думок з приводу цієї проблематики вчених, міжнародно – правових стандартів показати способи протидії корупції у різних державах...
63935. Принципы окрашивания волос 650.59 KB
  Изменение моды на прически вызывает изменение моды на цвет волос. Независимо от того почему красятся волосы: желание ли это скрыть седину или же просто с декоративной целью в любом случае необходимо стремиться к созданию естественных тонов.
63936. Совершенствование методов управления в ООО «Про-Сервис» 369 KB
  Цель данного исследования – на основе проведенного анализа стиля руководства и методов управления в ООО «Про-Сервис» разработать предложения по их совершенствованию. Для достижения цели данного исследования необходимо решить следующие задачи: Рассмотреть сущность стилей руководства и методов управления в организации...
63937. Оценка банковской деятельности ЗАО «Русский Стандарт» 267.5 KB
  Российские банки вынуждены работать в условиях повышенных рисков и чаще, чем их зарубежные партнеры оказываются в кризисных ситуациях. Прежде всего, это связано с недостаточной оценкой собственного финансового положения, привлеченных и размещенных средств, надежности и устойчивости обслуживаемых клиентов.
63940. Создание электронного учебника по предмету АИС 1.03 MB
  Чтобы создать свою страничку, вам необязательно знать даже основы html, т.к. программа возьмет на себя львиную долю работы по написанию html-кода. Можно порекомендовать Macromedia Dreamweaver и как своеобразный учебник
63941. Технологическиий процесс приготовления сложной кулинарной продукции в ресторане «Аляска» 772.02 KB
  Вспомним к примеру знаменитые пиры римских патрициев где подавались невообразимые блюда вроде соловьиных язычков куда быстроногие рабы-бегуны доставляли живых миног с побережья моря и лед с вершин гор. В ресторане Аляска реализуют смешанные алкогольные и безалкогольные напитки...