17528

Java Servlet та JSP

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

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

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

Украинкский

2013-07-04

86 KB

22 чел.

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


 

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

41045. ЦІНА ПРОДУКЦІЇ. МЕТОДИ ЦІНОУТВОРЕННЯ. КРИТИЧНИЙ ОБСЯГ ВИРОБНИЦТВА 706 KB
  6 де Ц ціна за одиницю продукції грн.; Ц ціна одиниці продукції грн; постійні витрати грн; змінні витрати у розрахунку на одиницю продукції грн. Покупна ціна останнього становить 750 грн. Основна заробітна плата в розрахунку на одиницю продукції дорівнює 6 грн.
41046. ЕКОНОМІКА ІНТЕЛЕКТУАЛЬНОЇ ВЛАСНОСТІ 81 KB
  Активи підприємства складаються з матеріальних активів, до яких відносять: рухоме, нерухоме майно і оборотні кошти, а також з нематеріальних активів - в основному прав.
41049. РАЗРАБОТКА БИЗНЕС-ПЛАНА ОТКРЫТИЯ ИНТЕРНЕТ-МАГАЗИНА “СТОЛИЦА АНИМЕ” 1.65 MB
  Рассмотреть теоретические аспекты разработки и использования информационных систем. Разработать план внедрения автоматизирования бизнес процессов деятельности интернет магазина. Разработать “бизнес-план” открытия интернет-магазина “Столица Аниме”. Проработать методические аспекты...
41050. ПРАВОВОЕ РЕГУЛИРОВАНИЕ СТРАХОВОГО ДЕЛА 127.5 KB
  Страхование находится в области социально-экономических отношений, в которых сосредоточены интересы всех социальных групп населения, государства и других публично-правовых образований. В связи с этим и появляется необходимость четкого правового построения системы страхования в Российской Федерации
41051. Характеристика засобів та методів на заняттях аеробіки на факультетах фізичної культури 30 KB
  При записі й проведенні оздоровчих програм фахівці використають певні назви для кожного конкретного руху терміни. Для того щоб уникнути різних тлумачень у назві й змісті рухів ми вважаємо за необхідне супроводити кожен термін англійською мовою відповідної йому російською назвою й описом особливостей руху Перш ніж перелічити ці терміни й дати опис танцювальних рухів розглянемо основні вимоги до осанки що надає специфіку техніці вправ в аеробіці. Не допускається супутньому руху піднімає ноги що поворот таза. При підйомі коліна може бути...
41052. Культура и цивилизация 407 KB
  История культуры может быть рассмотрена двояко, как процесс и как деятельность. Как процесс она носит объективный характер, подчиняется определенным законам и теснейшим образом связана с социальными структурами и обслуживающими их институтами.
41053. Поняття про речове забезпечення. Значення та завдання речового забезпечення 112 KB
  Природними потребами нормальної життєдіяльності людей є їжа, одяг, паливо, житло. Без відомого мінімуму предметів речового майна неможлива бойова діяльність людей, тому що вони задовольняють життєво важливі потреби особового складу військ і створюють необхідні умови для виконання різноманітних бойових задач.