You are on page 1of 7

VEŽBE 05 – MVC – PROSLEĐIVANJE ATRIBUTA

Set i Get Atribute

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:

request.setAttribute(„ime atributa“, objekat);

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.

PRIMER: Prosleđivanje atributa „msg“ iz Servleta i njegovo prihvatanje na JSP strani.


SERVLET JSP
request.setAttribute("msg", msg); String msg = (String)
request.getAttribute("msg");

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);

// redirekcija bez prosledjivanja na index.jsp

response.sendRedirect("index.jsp");

Prikaz.jsp (u ovom slučaju ) je stranica na koju se šalju svi set-ovani atributi.

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

 Olakšava rad na JSP stranama pri ispisu vrednosti prenetih atributa

 Nije potrebna provera Null Exception, ispisuje ako ima atributa a ako nema ne ispisuje

Neophodno za korišćenje:

 U okviru WEB-INF/lib direktorijuma dodaju se jar arhive:

o jstl.jar

o standard.jar

 U okviru JSP stranice na kojoj se koristi JSTL na vrhu se dodaje:


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

Sve funkcionalnosti na sledećem linku:

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

<c:forEach var="osoba" items="${lo}">


${osoba.ime}
${osoba.prezime}
</c:forEach>

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);

// ubacivanje osobe u sesiju


HttpSession sesija = request.getSession();
sesija.setAttribute("ulogovan", o);

// 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;

public class Auto {


private String marka;
private int cena;
public String getMarka() {
return marka;
}
public void setMarka(String marka) {
this.marka = marka;
}
public int getCena() {
return cena;
}
public void setCena(int cena) {
this.cena = cena;
}
public Auto() {
super();
// TODO Auto-generated constructor stub
}
public Auto(String marka, int cena) {
super();
this.marka = marka;
this.cena = cena;
}
}

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"%>

<!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>
<body>

<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);

Auto a = new Auto(marka,c);

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

// korektan prenos, vracen kreiran auto

You might also like