Professional Documents
Culture Documents
U MVC modelu Servlet ima ulogu da kontroliše tok informacija i prosleđuje odgovarajuće
podatke na željene stranice.
Objekat bilo kojeg tipa se iz Servleta može poslati preko request objekta metodom:
Na JSP stranici (ili Servlet-u) se objekat preuzima takođe preko request objekta metodom:
request.getAttribute(„ime atributa“);
Pošto se sa getAttribute može pokupiti bilo koji tip objekta neophodno je uraditi „kastovanje“
ili naznaku kojeg tipa je pokupljeni atribut.
Sa ovako osmišljenim prenosom atributa JSP se može dizajnirati da predstavlja VIEW za određeni
tip objekta ili njegovu kolekciju, s’tim što nije važno ko će proslediti objekat na ispis, pod
pretpostavkom da zna ime atributa koji se šalje.
Svi podešeni atributi se iz servleta šalju na željenu JSP stranu ili Servlet sledećom komandom:
// prosledjivanje svih parametara i kreiranih atributa na index.jsp
request.getRequestDispatcher("index.jsp").forward(request, response);
response.sendRedirect("index.jsp");
NAPOMENE:
RequestDispatcher može biti pozvan samo jednom unutar jednog servleta,
može ih biti onoliko koliko ima i grana koda (if-else).
Ne sme da postoji grana koda koja nema svoj RequestDispatcher jer će se onda ostati u
Servletu i nećemo se vratiti ni na jednu jsp stranicu
1
JSTL
JSTL – Java Standard Tag Library
Nije potrebna provera Null Exception, ispisuje ako ima atributa a ako nema ne ispisuje
Neophodno za korišćenje:
o jstl.jar
o standard.jar
http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm
Način upotrebe:
Za prosleđen jedan prost atribut na primer msg na JSP strani njegova vrednost se ispisuje na
sledeći način:
Bez JSTL
<%
String msg = (String) request.getAttribute("msg");
if (msg!= null && msg.length() > 0){
%>
<%=msg %>
<%} %>
Sa JSTL
${msg}
2
Za prosleđen jedan složen atribut na primer osoba (sa atributima: ime, prezime) na JSP strani
njihova vrednost se ispisuje na sledeći način:
Bez JSTL
<%
Osoba osoba = (Osoba) request.getAttribute("osoba");
if (osoba != null){
%>
<%=osoba.getIme() %>
<%=osoba.getPrezime() %>
<%} %>
Sa JSTL
${osoba.ime}
${osoba.prezime}
Za prosleđen niz (listu) lo složenih atributa na primer osoba (sa atributima: ime, prezime) na JSP
strani njihova vrednost se ispisuje na sledeći način:
Bez JSTL
<%
ArrayList<Osoba> lo = (ArrayList<Osoba>)request.getAttribute("lo");
if (lo != null) {
%>
for (Osoba osoba : lo) {
<%= osoba.getIme() %>
<%= osoba.getPrezime() %>
<%} %>
<%=} %>
Sa JSTL
3
VAŽNO: Na ove načine se objekat ispisuje ako postoji a ako ne postoji ne ispisuje se ništa!!!
Ako želimo da zaokružimo određeni deo koda sa upitom (da zaštitimo stranicu od nedozvoljenog pristupa
treba nam jstl if upit.)
// servlet
Osoba o = new Osoba(ime);
// jsp
<c:if test="${ulogovan != null}">
ULOGOVAN :${ulogovan.ime}<br>
</c:if>
Međutim ako želimo da ako objekat ne postoji ispišemo poruku to nije moguće jer ne postoji if-
else ali postoji chose-when-otherwise.
<c:choose>
<c:when test="${ulogovan == null}">
Niste ulogovani.
</c:when>
<c:otherwise>
Ulogovan <c:out value="${ulogovan.ime}" />
</c:otherwise>
</c:choose>
4
ZADATAK 1: Kreirati klasu auto (marka, cena).
Na index.jsp kreirati formu za unos auta i proslediti je na obrada.jsp
ispod forme podesiti ispis atributa "msg"
na standardan način
pomoću jstl
ispod forme podesiti ispis atributa "auto" i njegove vrednosti za marku i cenu
na standardan način
pomoću jstl
Na obrada.jsp prihvati parametre i izvršiti sve provere i proslediti odgovarajuće atribute na
index.jsp
package rs;
5
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<form action="obrada.jsp">
marka <input type="text" name="marka" value=<
%=request.getParameter("marka")%>>${msg}<br>
cena <input type="text" name="cena">${msg}<br>
<input type="submit" value="posalji">
</form>
<%
String msg = (String)request.getAttribute("msg");
if(msg!=null && msg.length()>0)
out.println(msg);
%>
<br>
${msg}
<br>
${msg}
<br>
${msg}
<br>${auto.marka}
<br>${auto.cena}
</body>
</html>
<%@page import="rs.Auto"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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>Insert title here</title>
</head>
<%
String marka = request.getParameter("marka");
String cena = request.getParameter("cena");
%>
6
<body>
<%
if(marka!=null && marka.length()>0 &&
cena!=null && cena.length()>0){
try{
int c = Integer.parseInt(cena);
request.setAttribute("auto", a);
request.getRequestDispatcher("index.jsp").forward(request,
response);
}catch(Exception e){
request.setAttribute("msg", "cena mora biti broj");
request.getRequestDispatcher("index.jsp").forward(request,
response);
}
}else{
request.setAttribute("msg", "Morate popunutu sva polja");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
%>
</body>
</html>
// nisu popunjena polja