Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package servlets;
- import com.saxonica.xqj.SaxonXQDataSource;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.xml.xquery.XQConnection;
- import javax.xml.xquery.XQDataSource;
- import javax.xml.xquery.XQException;
- import javax.xml.xquery.XQExpression;
- import javax.xml.xquery.XQSequence;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- /**
- *
- * @author Marcin
- */
- public class BooksServlet extends HttpServlet {
- /**
- * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
- * methods.
- *
- * @param request servlet request
- * @param response servlet response
- * @throws ServletException if a servlet-specific error occurs
- * @throws IOException if an I/O error occurs
- */
- protected void processRequest(HttpServletRequest request, HttpServletResponse response, String param1, String param2)
- throws ServletException, IOException {
- response.setContentType("text/html;charset=UTF-8");
- try (PrintWriter out = response.getWriter()) {
- /* TODO output your page here. You may use following sample code. */
- out.println("<!DOCTYPE html>");
- out.println("<html>");
- out.println("<head>");
- out.println("<title>Servlet BooksServlet</title>");
- out.println("</head>");
- out.println("<body>");
- out.println("<h1>Servlet - BooksServlet at " + request.getContextPath() + "</h1>");
- out.println("<form method='post'>");
- out.println("<input type='text' name='n1'>");
- out.println("<input type='text' name='n2'>");
- out.println("<input type='submit' value='search'>");
- out.println("</form>");
- XQDataSource ds = new SaxonXQDataSource(); //źródło xml
- XQConnection conn;
- try {
- conn = ds.getConnection(); //połaczenie ze źródłem
- XQExpression exp = conn.createExpression();
- //XQSequence seq = exp.executeQuery("for $n in 1 to 10 return $n*$n"); //wykonanie zapytania na pliku xml
- XQSequence seq;
- String seqs;
- seqs = "for $x in doc('https://mstepniak.ii.uph.edu.pl/air/lab06/books.xml')/catalog/book \n";
- if(param1 != null && !param1.equals("")){
- seqs += "where $x/title = \"" + param1 + "\"\n";
- }
- if(param2 != null && !param2.equals("")){
- seqs += "let $rok :=(substring($x/publish_date, 1, 4)) \n";
- seqs += "where $rok = " + "\"" + param2 + "\"" + "\n";
- }
- seqs += "return $x ";
- seq = exp.executeQuery( seqs);
- //poruszanie się po zbiorze
- while (seq.next()) {
- Element book = (Element)seq.getNode();
- out.println(book.getElementsByTagName("title").item(0).getTextContent());
- out.println("<br/>");
- }
- } catch (XQException ex) {
- ex.printStackTrace(out);
- }
- out.println("</body>");
- out.println("</html>");
- }
- }
- // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
- /**
- * Handles the HTTP <code>GET</code> method.
- *
- * @param request servlet request
- * @param response servlet response
- * @throws ServletException if a servlet-specific error occurs
- * @throws IOException if an I/O error occurs
- */
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- processRequest(request, response, null, null);
- }
- /**
- * Handles the HTTP <code>POST</code> method.
- *
- * @param request servlet request
- * @param response servlet response
- * @throws ServletException if a servlet-specific error occurs
- * @throws IOException if an I/O error occurs
- */
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- String s1 = request.getParameter("n1");
- String s2 = request.getParameter("n2");
- processRequest(request, response, s1, s2);
- }
- /**
- * Returns a short description of the servlet.
- *
- * @return a String containing servlet description
- */
- @Override
- public String getServletInfo() {
- return "Short description";
- }// </editor-fold>
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement