270 likes | 414 Vues
Wprowadzenie. Plan wykładu (I). Zagadnienia wstępne: Servlety, JDBC Strony JSP Spring i SpringMVC DisplayTag SpringAOP Definiowanie znaczników Zabezpieczenia stron Zagadnienia związane z przetwarzaniem plików XML. Plan wykładu (II). Co to są servlety? Podstawowe metody servletów
E N D
Plan wykładu (I) • Zagadnienia wstępne: Servlety, JDBC • Strony JSP • Spring i SpringMVC • DisplayTag • SpringAOP • Definiowanie znaczników • Zabezpieczenia stron • Zagadnienia związane z przetwarzaniem plików XML Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Plan wykładu (II) • Co to są servlety? • Podstawowe metody servletów • Request, response i session • Co to jest JDBC? • Nawiązywanie połączenia z bazą danych • Współpraca z bazą danych przez JDBC Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Servlety Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Metody Servletów public void init(ServletConfig config) public void destroy() public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykładowy Servlet public class PrzykladServlet extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out; String title = „Tytul"; response.setContentType("text/html"); out = response.getWriter(); out.println(HTML>\n" +"<HEAD><TITLE>Strona1</TITLE></HEAD>\n" +"<BODY>\n" +"<H1>” + title+ ”</H1>\n" +"</BODY></HTML>"); out.close(); } } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Zapytanie (I) HttpServletRequest request – zapytanie String getParameter(String) void setParameter(String,String) String [] getParameterValues(String) Enumeration getParametersNames() Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Zapytanie (II) String sort = ServletRequestUtils.getStringParameter(request, "sort",null); int page = ServletRequestUtils.getIntParameter(request, "page", -1); public static int[] getIntParameters(request, ”name”) public static int getRequiredIntParameter(request, ”name”) throws ServletRequestBindingException Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Zapytanie (III) request.getServerPort(); request.getServletPath(); Cookie[] cookies = request.getCookies(); for (Cookie c : cookies) { if (c.getName().equals("wykonano")) { boolean a = Boolean.parseBoolean(c.getValue()); ..... } } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Zapytanie (IV) String userAgent = request.getHeader("User-Agent"); if (userAgent.contains("MSIE") { ... } else if (userAgent.contains("Opera")) { ... } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Odpowiedź (I) HttpServletResponse response - odpowiedź OutputStream o = response.getOutputStream(); response.setCharacterEncoding("UTF-8"); response.setContentType(”text/html”); response.setHeader(”...”); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Odpowiedź (II) Cookie c = new Cookie(”wykonano", Boolean.FALSE.toString()); c.setPath("/"); c.setMaxAge(-1); response.addCookie(c); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
HttpSession (I) HttpSession session = request.getSession(true) String getAttribute(String) void setAttribute(String,String) public void removeAttribute(String name) public Enumeration getAttributeNames() Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
HttpSession (II) request.getSession().setAttribute("preselection”, preselection); preselection = (Preselection) request.getSession().getAttribute(”preselection”); request.getSession().removeAttribute("preselection”); Long time = request.getSession().getLastAccessedTime(); request.getSession().setMaxInactiveInterval(1); // sekundy request.getSession().getId(); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
ServletContext WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext( request.getSession().getServletContext() ); ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[] { servletContext.getRealPath( "WEB-INF” + System.getProperty("file.separator") + ”biblioteka-daoInna.xml” )}); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykładowy Servlet (I) public class ListyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { WebApplicationContext ctx = WebApplicationContextUtils. getWebApplicationContext(request.getSession().getServletContext()); UzytkownikService uzytkownikService = (UzytkownikService) ctx.getBean("uzytkownikService"); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykładowy Servlet (II) StringBuilder wynik = new StringBuilder(); String szukanyStart = request.getParameter(”q"); if (szukanyStart == null) return; ArrayList<Criterion> criteriaList = new ArrayList<Criterion>(); criteriaList.add(new BooleanCriterion("aktywny", "Aktywny",true)); criteriaList.add(new StringFirstCriterion("nazwisko", "Nazwisko",szukanyStart)); ArrayList<Uzytkownik> list = (ArrayList<Uzytkownik>) uzytkownikService.findByFirstLetter(criteriaList); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykładowy Servlet (III) Iterator<Uzytkownik> listIterator = list.iterator(); while (listIterator.hasNext()) { Uzytkownik uzytkownik = listIterator.next(); wynik.append(uzytkownik.getNazwisko()+ " " + uzytkownik.getImie() + "\n"); } response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); out.print(wynik.toString()); out.close(); }} Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykładowy Servlet (uzupełnienie) <form:input path="identyfikatorUzytkownika" /> <script type="text/javascript"> $().ready(function () { $("#identyfikatorUzytkownika").autocomplete('<c:url value="/listy/" />', { width: 400, selectFirst: false, extraParams: {"pole" : "uzytkownik"} }); }); </script> Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
DAO • Data Access Object (DAO) to wzorzec projektowy dostępu do danych zewnętrznych zakładający rozdzielenie kodu odpowiedzialnego za trwałość obiektów od kodu implementującego reguły biznesowe. Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Genercja połączenia • Pobranie sterownika (driver) JDBC. • Zdefiniowanie obiektu connection. • Ustanowienie połączenia. • Utworzenie objektu statement. • Wykonanie zapytania. • Pobranie wyników zapytania. • Zamknięcie połączenia. Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
JDBC - przykład (baza danych) CREATE TABLE uzytkownik ( idUzytkownik int(11) NOT NULL auto_increment, imie varchar(255) default NULL, nazwisko varchar(255) default NULL, wiek int(11) default NULL, email varchar(255) default NULL, haslo varchar(255) default NULL, login varchar(255) default NULL, telefon varchar(255) default NULL, idPokoj int(11) default NULL, idRole int(11) default NULL, PRIMARY KEY (idOsoba) ) charset utf8 TYPE=MyISAM; Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
JDBC (obiekt domenowy) public class UzytkownikBean { private String idUzytkownik=""; private String imie=""; private String nazwisko=""; private String wiek=""; private String email=""; private String haslo=""; private String telefon = ""; private String idRole=""; private String idPokoj=""; ... } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
JDBC - przykład try { Class.forName(driver); Connection connection = DriverManager.getConnection(url, username, password); Statement statement = connection.createStatement(); String query = "SELECT * FROM fruits"; ResultSet resultSet = statement.executeQuery(query); while(resultSet.next()) { System.out.print(" " + resultSet.getInt(1)); } } catch(ClassNotFoundException cnfe) { System.err.println("Error loading driver: " + cnfe); } catch(SQLException sqle) { System.err.println("Error connecting: " + sqle); } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
JDBC - przykład (II) protected static String SELECT_UZYTKOWNIK ="SELECT " + "idUzytkownik,"+ "imie,"+ "nazwisko"+ " FROM "+ "uzytkownik"; protected static String SELECT_UZYTKOWNIK_WHERE_ID = SELECT_OSOBA + " WHERE idUzytkownik=?"; Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
JDBC - przykład (III) • public UzytkownikBean selectUzytkownikWhereId(String id) { UzytkownikBean f= null; Connection con= getConnection(); PreparedStatement ps= null; ResultSet rs= null; try { ps= con.prepareStatement(SELECT_UZYTKOWNIK_WHERE_ID); ps.setString(1, id); rs= ps.executeQuery(); ...... Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
JDBC - przykład (IV) while (rs != null && rs.next()) { f = new UzytkownikBean(); f.setIdUzytkownik(rs.getString("idUzytkownik")); f.setImie(rs.getString("imie")); f.setNazwisko(rs.getString("nazwisko")); } } catch (SQLException sqle) { sqle.printStackTrace(); } finally { closeAll(con, ps, rs); rs= null; ps= null; con= null; } return f; } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego