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


 

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

33071. Рене Декарт 13.65 KB
  У теорії пізнання він розвиває раціоналізм тобто вчення згідно з яким розум думка визнаються найвищою цінністю. Метод наукового пізнання який Декарт розглядає в своїх працях Міркування про метод Правила для керівництва розумом називається аналітичним. Цей метод вимагає ясності і чіткості пізнання розчленування об'єкту на складові частини і вивчення їх руху думки від простого до складного. У теорії пізнання Спіноза розвиває раціоналізм.
33072. Просвітництво 13.8 KB
  Класичним філософом французького Просвітництва був Вольтер 16941778 головні ідеї якого викладені у працях: Філософські листи 1734 Метафізичний трактат 1734 Роздуми про людину 1737 Філософський словник 1764 Філософія історії 1765 та ін. Головне завдання своєї філософії Вольтер вбачає в розвінчуванні релігійної догматики що заважає людям будувати щасливе життя культивуючи неуцтво неосвіченість фанатизм брехню. У філософії природи Вольтер послідовник Ньютона. У теорії пізнання Вольтер прагнув поєднати сенсуалістичний...
33073. Класична німецька філософія 14.81 KB
  Німецька класична філософія охоплює порівняно короткий період який обмежений 80ми роками XVIII століття з одного боку і 1831 роком роком смерті Гегеля з іншою або пізнішою антропологічною матеріалістичною філософією Фейєрбаха який проте увійшов до протиріччя з основним характером німецької філософії цього періоду її ідеалізмом. Основними представниками цієї філософії були основоположник її Иммануил Кант його послідовник Фихте Шеллинг супротивник кантіанської філософії Георг Вільгельм Фрідріх Гегель. Що стосується загальної...
33074. Родоначальником німецької класичної філософії є Іммануїл Кант 13.37 KB
  До Канта вважали що пізнання є результатом дій на людину зовнішніх чинників. Кант перевернув це співвідношення: він проголосив що пізнання і знання є результатом людської насамперед розумової активності. Аналогія з коперниканським переворотом тут цілком очевидна: Коперник зрушив Землю яку до того розглядали нерухомим центром Всесвіту а Кант зрушив людину поклавши край її пасивності.
33075. Система і метод філософії Гегеля 13.77 KB
  Вихідним пунктом філософської концепції Гегеля є тотожність буття та мислення. Мислення з точки зору Гегеля є не лише суб'єктною людською діяльністю а й незалежною від людини об'єктивною сутністю першоосновою всього сущого. Мислення стверджує Гегель відчужує своє буття у формі матерії природи яка є інобуттям цього об'єктивно існуючого мислення або абсолютної ідеї. При цьому Гегель розглядає мислення абсолютну ідею не як нерухому незмінну першосутність а як процес неперервного розвитку пізнання як процес сходження від нижчого до...
33076. Глибоким критиком ідеалістичної системи Гегеля став Л. Фейєрбах, його сучасник, учень, який, однак, не став послідовником свого вчителя 13.54 KB
  Великі зміни в історії суспільства вважав філософ пояснюються змінами форм релігії. Будучи глибоким критиком релігії що існувала на той час Фейєрбах намагався створити свою нову релігію в якій замість культу Бога буде панувати культ людини і любові. Фейєрбах запропонував відмінне від традиційного розуміння філософії її минулого та сучасності ролі в суспільстві і ставлення до релігії. Водночас і сама філософія повинна змінитися: вона не має стати простим чи негативним в гегелівському розумінні запереченням релігії.
33077. Загальна характеристика сучасної світової парадигми 14.29 KB
  Характерна ознака цієї філософії безмежна віра в розум. Особливістю класичної філософії також те що розглядаючи людину та історію вона сконцентрувала свою увагу навколо проблеми свободи та інших гуманістичних цінностей і стверджувала необхідність раціонального пізнання загальнолюдських моральних принципів та ідеалів. Для сучасної філософії характерні такі суттєві риси. цей стиль філософствування починає домінувати в західній філософії; філософію мислення замінює філософія життя .
33078. Прагматизм 12.09 KB
  Дьюі 18591952 вважають що філософія повинна займатись не проблемами філософів а “людськими проблемами†тобто цілями та засобами їх вирішення і таким чином повинна бути перетворена в інтересах того що є вигідним для життя людини. Людина повинна діяти у ірраціональному світі та спроби досягнути об’єктивної істини є безглуздими.
33079. Філософія життя 13.85 KB
  Найбільшого поширення філософія життя набула в першій чверті XX ст. Представниками філософії життя є Фрідріх Ніцше 1844–1900 Анрі Бергсон 1859–1941 Вільгельм Дільтей 1833–1911 Георг Зіммель 1858–1918 Освальд Шпенглер 1880–1936 та ін. Філософія життя розглядає все що існує як форму прояву життя .