Способи обміну інформацією між компонентами web-застосунку
За звичай web-застосунок складається з декількох компонентів, що обмінюються інформацією між собою.
Якщо джерелом інформації є html сторінка, то інформація може бути передана через форму, а саме, через атрибути тегів, таких як input, select, button. Кожен параметер, що передається має мати назву і значення. Приймати цю інформацію можуть сервлети або jsp-сторінки через параметер request методів doPost або doGet. Для цього використовується метод getParameter(String). До методу передається ім’я параметру, а метод повертає значення параметру у вигляді рядка символів. Сервлети і jsp-сторінки можуть також обмінюватися між собою атрибутами через параметер request. Для цього використовуються методи setAttribute(String, Object) та getAttribute(String) . Атрибут – це об’єкт будь якого класу. А для його ідентифікації використовується рядок символів, що є ім’ям атрибуту.
Сервер Apache Tomcat
Про сервер та його налаштування можна почитати у методичці 2010 року видання та у документації.
5.3 Файл web.Xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<listener>
<listener-class>
StarterListener
</listener-class>
</listener>
<filter>
<filter-name>
Set Character Encoding
</filter-name>
<filter-class>
CharEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>bankservlet</servlet-name>
<servlet-class>
BankServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>bankservlet</servlet-name>
<url-pattern>/Bank</url-pattern>
</servlet-mapping>
</web-app>
5.4. Класс BankServlet
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class BankServlet
*/
@WebServlet("/BankServlet")
public class BankServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private DataBaseMyClass dbMyClass = new DataBaseMyClass();
/**
* @see HttpServlet#HttpServlet()
*/
public BankServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;");
PrintWriter writer = response.getWriter();
writer.write("<html>");
writer.write("<head><title>Servlet</title></head>");
writer.write("<body bgcolor=\"grey\">");
outOptions(writer);
outAddForm(writer);
outDeleteForm(writer);
outUpdateForm(writer);
outBankList(writer);
writer.write("</body>");
writer.write("</html>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if(request.getParameter("insertfield") != null){
Bank b = new Bank();
b.setUirNameBank(request.getParameter("uirnamebank"));
b.setFioBuhgalter(request.getParameter("fiobuhgalter"));
b.setNumTelBuhgalter(request.getParameter("numtelbuhgalter"));
b.setFioDirector(request.getParameter("fiodirector"));
b.setNumTelDirector(request.getParameter("numteldirector"));
dbMyClass.insertBank(b.getNumTelDirector(),
b.getFioDirector(),
b.getNumTelBuhgalter(),
b.getFioBuhgalter(),
b.getUirNameBank());
System.out.println("data inserted into bank");
}
if(request.getParameter("deletefield") != null){
dbMyClass.deleteBank(request.getParameter("uir_name_bank"));
System.out.println("data deleted from bank");
}
if(request.getParameter("updatefield") != null){
dbMyClass.updateBank(request.getParameter("upd_uir_name_bank"),
request.getParameter("newnumteldirector"),
request.getParameter("newfiodirector"),
request.getParameter("newnumtelbuhgalter"),
request.getParameter("newfiobuhgalter"),
request.getParameter("newuirnamebank"));
System.out.println("data updated");
}
doGet(request, response);
}
private void outAddForm(PrintWriter out){
out.write("<FORM method=POST name=\"addform\" action=BankServlet>");
out.write("uir name bank: <input type=\"text\" name=\"uirnamebank\"><br>");
out.write("fio buhgalter: <input type=\"text\" name=\"fiobuhgalter\"><br>");
out.write("num tel buhgalter: <input type=\"text\" name=\"numtelbuhgalter\"><br>");
out.write("fio director: <input type=\"text\" name=\"fiodirector\"><br>");
out.write("num tel director: <input type=\"text\" name=\"numteldirector\"><br>");
out.write("<input type=\"hidden\" value=\"insert\" name=\"insertfield\"><br>");
out.write("<input type=\"submit\" name=\"addform\" value=\"Add\">");
out.write("</FORM><br>");
}
private void outBankList(PrintWriter out){
ArrayList<Bank> list = null;
list = dbMyClass.getBankList();
if(list.size() == 0){
out.write("<div align=\"center\"><b>No Banks</b></div>");
}else{
out.write("<table bgcolor=\"#00FF00\">");
out.write("<tr>");
out.write("<th>uir name bank</th>");
out.write("<th>fio buhgalter</th>");
out.write("<th>num tel buhgalter</th>");
out.write("<th>fio director</th>");
out.write("<th>num tel director</th>");
out.write("</tr>");
for(int i=0;i<list.size();i++){
out.write("<tr>");
out.write("<td>" + list.get(i).getUirNameBank() + "</td>");
out.write("<td>" + list.get(i).getFioBuhgalter() + "</td>");
out.write("<td>" + list.get(i).getNumTelBuhgalter() + "</td>");
out.write("<td>" + list.get(i).getFioDirector() + "</td>");
out.write("<td>" + list.get(i).getNumTelDirector() + "</td>");
out.write("</tr>");
}
out.write("</table>");
}
}
private void outDeleteForm(PrintWriter out){
ArrayList<Bank> list = null;
list = dbMyClass.getBankList();
out.write("<h1 align=\"center\">Delete Form</h1>");
if(list.size() == 0){
out.write("<div align=\"center\"><b>No Banks</b></div>");
}else{
out.write("<p align=\"center\">delete bank by id</p>");
out.write("<FORM method=POST name=\"deleteform\" action=BankServlet>");
out.write("<SELECT name=\"uir_name_bank\">");
for(int i = 0;i<list.size();i++){
out.write("<OPTION>" + list.get(i).getUirNameBank() + "</OPTION>");
}
out.write("</SELECT>");
out.write("<input type=\"hidden\" value=\"delete\" name=\"deletefield\">");
out.write("<input type=\"submit\" name=\"deleteform\" value=\"delete\"><br>");
out.write("</FORM><br>");
}
}
private void outOptions(PrintWriter out){
out.write("<p align=\"center\">select options</p>");
out.write("<hr>");
}
private void outUpdateForm(PrintWriter out){
ArrayList<Bank> list = null;
list = dbMyClass.getBankList();
if(list.size() == 0){
System.out.println("not updated");
}else{
out.write("<h1 align=\"center\">Update Form</h1>");
out.write("<p align=\"center\">update bank by id</p>");
out.write("<FORM bgcolor=\"white\" method=POST name=\"updateform\" action=BankServlet>");
out.write("<SELECT name=\"upd_uir_name_bank\">");
for(int i = 0;i<list.size();i++){
out.write("<OPTION>" + list.get(i).getUirNameBank() + "</OPTION>");
}
out.write("</SELECT>");
out.write("<h3 align=\"center\">New data Bank</h3>");
out.write("uir name bank: <input type=\"text\" name=\"newuirnamebank\"><br>");
out.write("fio buhgalter: <input type=\"text\" name=\"newfiobuhgalter\"><br>");
out.write("num tel buhgalter: <input type=\"text\" name=\"newnumtelbuhgalter\"><br>");
out.write("fio director: <input type=\"text\" name=\"newfiodirector\"><br>");
out.write("num tel director: <input type=\"text\" name=\"newnumteldirector\"><br>");
out.write("<input type=\"hidden\" value=\"update\" name=\"updatefield\">");
out.write("<input type=\"submit\" name=\"updateform\" value=\"update\"><br>");
out.write("</FORM><br>");
}
}
}
