17528

Java Servlet та JSP

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

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

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

Украинкский

2013-07-04

86 KB

19 чел.

Лабораторна робота №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 – інтерфейсом.


 

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

47970. МЕНЕДЖМЕНТ ПЕРСОНАЛУ 719.5 KB
  Курс Менеджмент персоналу є складовою частиною циклу професійноорієнтованих дисциплін підготовки магістра спеціальності. Предметом курсу є системно організований процес відтворення й ефективного використання персоналу організації. Метою вивчення дисципліни “Менеджмент персоналу†є формування системи знань з теорії та практики керування персоналом різноманітних організацій функціонуютьу сфері економіки України.
47971. Політична економія 451 KB
  Розширення самостійності підприємств роздержавлення власності поява її різноманітних форм дозволяє перетворити більшість учасників суспільного виробництва в реальних господарів. Предметом політичної економії є сукупність економічних відносин які виникають в процесі виробництва обміну розподілу і споживання благ. Вона аналізує ціни окремих товарів витрати на їх виготовлення оптимальне співвідношення ресурсів...
47972. 1С: Бухгалтерія 7.7 218.83 KB
  Операції і проведення.1 Операції і проведення.6 Параметри операції. Якщо кінцевий користувач має доступ до констант то це вікно може бути викликано будь – яким пунктом меню кнопкою панелі інструментів або через системне меню “Операціїâ€.
47973. Аграрна політика. Курс лекцій 2.2 MB
  Соціальноекономічний стан аграрного виробництва. Сучасний стан і тенденції розвитку аграрного виробництва Державна політика щодо сільськогосподарського виробництва у період існування Радянського Союзу Економіці належить виняткова роль у забезпеченні життя суспільства як сфери виробництва і відтворення матеріальних благ.
47974. Концепція проекту. Визначення і сутність інвестиційного проекту діяльності 277.5 KB
  Концепція проекту План лекції: Визначення і сутність інвестиційного проекту діяльності. Структура інвестиційного проекту.Життєвий цикл проекту та його кроки 4.Визначення і сутність інвестиційного проекту діяльності Проект є організаційною формою реалізації процесу інвестування.
47975. Будівельна механіка. Конспект лекцій 1.73 MB
  Перший тип опори представлений на рис. Схематично її зображують у вигляді одного стержня з двома ідеальними без тертя шарнірами на кінцях рис. Другий тип опори рис.Схематично опора другого типу зображується за допомогою двох стержнів з ідеальними шарнірами на кінцях; верхній шарнір є загальним для обох стержнів рис.
47976. БЕЗПЕКА ЖИТТЄДІЯЛЬНОСТІ 1.97 MB
  Усе це вказує на потребу формування знань вмінь навичок з безпеки життєдіяльності як необхідної умови безпечного та повноцінного життя людини. Безпека життєдіяльності людини. Безпека життєдіяльності людини. Основи безпеки життєдіяльності людини: Навч.
47977. Статистична наука 554 KB
  Одиниця сукупності – це первинний елемент сукупності що створює відповідну сукупність і відображає її якісну однорідність. Одиниці сукупності повинні бути носіями певних властивостей або ознак тобто таких властивостей які можуть бути встановлені і вивчені виміряні. Тема 2 Статистичне спостереження Статистичне спостереження як метод інформаційного забезпечення є цілком необхідним для виявлення сукупності відомостей пор явища та процеси суспільного життя. Суцільне спостереження передбачає охоплення обліком всіх без винятку одиниць...
47978. ЕКОЛОГІЯ. БІОСФЕРА – СЕРЕДОВИЩЕ ЖИТТЯ ЛЮДИНИ 331 KB
  Короткий нарис історії екології. Українська екологічна школа Історія розвитку екології як синтетичної наукової дисципліни порівняно нетривала. Протягом XIX та початку XX століття розвиток спеціальних аналітичних наук сприяв накопиченню фактичних даних без яких було б неможливим формування екології як сучасної синтетичної науки. У становленні екології помітну роль зіграли праці К.