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


 

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

71446. ПОСТРОЕНИЕ МОДЕЛЕЙ МЕСТНОСТИ И СНИМКОВ ЗАДАННЫХ ПАРАМЕТРОВ 97 KB
  Для вычисления координат точек макетного снимка обычно используются уравнения коллинеарности. При этом подбираются такие элементы ориентирования снимков и координаты точек местности при которых геометрические параметры создаваемых макетов соответствуют заданным.
71447. МЕТОД ИМИТАЦИОННОГО МОДЕЛИРОВАНИЯ 41.5 KB
  Сущность это метода состоит в построении так называемой имитационной модели исследуемого объекта и в целенаправленном экспериментировании с такой моделью для получения ответов на те или иные вопросы. Оперирование с математической моделью осуществляется при этом подобно...
71448. Точность определения координат точек объекта по стереопаре снимков 44 KB
  Для предрасчета точности определения координат точек местности по стереопаре аэрофотоснимков учитывая что углы наклона снимков не превышают 1 3 а базис фотографирования практически горизонтален воспользуемся формулами связи координат точек местности и координат...
71450. Определение элементов внешнего ориентирования модели по опорным точкам 22.5 KB
  Значения коэффициентов уравнений поправок i bi ci вычисляют по известным значениям координат ХМ YM ZM и X Y Z и приближенным значениям неизвестных. Полученную таким образом систему уравнений поправок решают методом последовательных приближений.
71451. Внешнее ориентирование модели. Элементы внешнего ориентирования модели 33 KB
  А точка объекта АМ соответствующая точке А объекта точка фотограмметрической модели. Векторы определяют положение начала системы координат модели ОМХМYMZM и точки А местности относительно начала системы координат объекта OXYZ.
71452. Построение фотограмметрической модели 25 KB
  Построение фотограмметрической модели заключается в определении координат точек объекта по измеренным на стереопаре снимков координатам их изображений в системе координат модели ОМХМYMZM. Определение координат точек модели производится по формулам прямой фотограмметрической засечки см.
71453. Определение элементов взаимного ориентирования 38 KB
  Для определения элементов взаимного ориентирования в качестве исходного используют уравнения взаимного ориентирования 1.3 в которое помимо измеренных координат точек на стереопаре снимков элементов внутреннего ориентирования и трех параметров задающих ориентацию системы координат...