Aprenda Java Web JSP

  • Página Inicial
  • Contato!
  • Tudo sobre Java Web JSP Parte 1!
  • Tudo sobre Java Web JSP Parte 2!
  • Tudo sobre Java Web JSP Parte 3!
  • Tudo sobre Java Web JSP Parte 4!
  • Tudo sobre Java Web JSP Parte 2

    Set Get Property

    Voltando a nossa bean, crie esses atributos e seus respectivos getters e setters:

    
    package beans;
    
    public class CursoJSPBean {
        private String tNome;
        private String tAno;
        private String tSexo;
        
        public int calcula(int num) {
            return num * 100;
        }
    
        public String gettNome() {
            return tNome;
        }
    
        public void settNome(String tNome) {
            this.tNome = tNome;
        }
    
        public String gettAno() {
            return tAno;
        }
    
        public void settAno(String tAno) {
            this.tAno = tAno;
        }
    
        public String gettSexo() {
            return tSexo;
        }
    
        public void settSexo(String tSexo) {
            this.tSexo = tSexo;
        }
    }
    
    

    Coloque isso no teste.jsp (sem apagar o que já estava lá):

    
    <jsp:setProperty property="*" name="calcula"/>
    <h3>Teste</h3>
    <jsp:getProperty property="tNome" name="calcula"/>
    <br/>
    <jsp:getProperty property="tAno" name="calcula"/>
    <br/>
    <jsp:getProperty property="tSexo" name="calcula"/>
    
    

    Voltando no formulário, volte e mude o método dele para "post". E dentro do formulário coloque isso:

    
    <form action="teste.jsp" method="post">
        <label for="cNome">Nome:</label>
        <input type="text" name="tNome" id="cNome" size="40" maxlength="100" placeholder="Insira seu Nome Aqui"/>
        <br/>
        <label for="cAno">Ano Nasc.:</label>
        <input type="number" name="tAno" id="cAno" min="1900" max="2100"/>
        <br/>
        Sexo:
        <input type="radio" name="tSexo" id="cMasc" value="M" checked/>
        <label for="cMasc">Masculino</label>
        <input type="radio" name="tSexo" id="cFem" value="F"/>
        <label for="cFem">Feminino</label>
        <br/>
        <input type="submit" value="Enviar"/>
    </form>
    
    

    PS: Os names dos campos do formulário devem ter os mesmos nomes dos campos no arquivo java.

    Expression Language

    Podemos fazer assim também no teste.jsp, para pegar propriedades:

    
    Nome: ${param.tNome}
    <br/>
    Ano: ${param.tAno}
    <br/>
    Sexo: ${param.tSexo}
    
    

    Podemos fazer outras coisas, coloque isso no index.jsp, dentro do form:

    
    <% session.setAttribute("user", "Java Avançado"); %>
    
    

    Aí na outra página basta fazer isso:

    
    ${sessionScope.user}
    
    

    Servlet

    Na index.jsp, crie esse formulário:

    
    <form action="LoginServlet" method="post">
        <label for="cLogin">Login:</label>
        <input type="text" name="tLogin" id="cLogin" size="40" maxlength="25" placeholder="Insira o Login"/>
        <br/>
        <label for="cSenha">Senha:</label>
        <input type="password" name="tSenha" id="cSenha" size="40" maxlength="15" placeholder="Até 15 dígitos"/>
        <br/>
        <input type="submit" value="Enviar"/>
    </form>
    
    

    Crie duas páginas JSP, com os nomes acessoliberado.jsp e acessonegado.jsp.

    Crie o bean com esse código:

    
    package beans;
    
    public class ValidaUser {
        private String tLogin;
        private String tSenha;
        
        public boolean validarLoginSenha(String login, String senha) {
            if(login.equals("admin") && senha.equals("123")) {
                return true;
            }
            else {
                return false;
            }
        }
    
        public String gettLogin() {
            return tLogin;
        }
    
        public void settLogin(String tLogin) {
            this.tLogin = tLogin;
        }
    
        public String gettSenha() {
            return tSenha;
        }
    
        public void settSenha(String tSenha) {
            this.tSenha = tSenha;
        }
    }
    
    

    Crie uma servlet chamada LoginServlet, num pacote de nome servlet. Altere apenas esses métodos:

    
    package servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @WebServlet("/LoginServlet")
    public class LoginServlet extends HttpServlet {
        private static final long SERIALVERSION = 1L;
        
        public LoginServlet() {
            super();
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request, response);
        }
    
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // Para escrever no console:
    
            System.out.println(request.getParameter("tLogin"));
            System.out.println(request.getParameter("tSenha"));
        }
    }
    
    

    Uma servlet intercepta dados e dá a resposta pra gente. Ela extende da classe HttpServlet.

    PS: Caso dê erro por causa do arquivos web.xml, exclua este antes de criar o servlet, e depois devolva ele pro local.

    Altere o método doPost assim:

    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ValidaUser valUser = new ValidaUser();
    
        String login = request.getParameter("tLogin").trim();
        String senha = request.getParameter("tSenha").trim();
    
        RequestDispatcher dispatcher; // Importe
    
        if(valUser.validarLoginSenha(login, senha)) {
            dispatcher = request.getRequestDispatcher("acessoliberado.jsp"); 
        }
        else {
            dispatcher = request.getRequestDispatcher("acessonegado.jsp"); 
        }
    
        dispatcher.forward(request, response);
    }
    
    

    Biblioteca JSTL

    As JSTL são tags do JSP para ajudar no desenvolvimento da aplicação.

    Primeiramente, adicione a biblioteca JSTL no projeto. Baixe elas aqui:

    Se for a versão mais recente, use esse:

    Para declarar em uma página JSP, faça assim, colocando no começo da página:

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

    Adicione a biblioteca JSTL no projeto JSP. E coloque essas tag:

    
    <c:out value="${'Bem-vindo ao JSTL!'}"/>
    
    

    No código acima, ele escreve na tela.

    Para pegar o HTML de uma página, faça assim:

    
    <c:import var="data" url="https://www.google.com.br/"/>
    
    <c:out value="${data}"/>
    
    

    Para settar uma variável, é assim::

    
    <c:set var="data" scope="page" value="${500 * 6}"/>
    
    <c:out value="${data}"/>
    
    

    Para remover essa mesma variável, faça assim:

    
    <c:remove var="data"/>
    
    

    Para capturar exceções de erro, fazemos assim:

    
    <c:catch var="erro">
        <% int vari = 100 / 0; %>
    </c:catch>
    
    <c:if test="${erro != null}">
        ${erro.message}
    </c:if>
    
    

    Modifique assim:

    
    <c:catch var="erro">
        <%= 100 / 2 %>
    </c:catch>
    
    <c:if test="${erro != null}">
        ${erro.message}
    </c:if>
    
    

    Condicionais também podem ser assim:

    
    <c:set var="numero" value="${100 / 2}"/>
    
    <c:choose>
        <c:when test="${numero > 50}">
            <c:out value="${'Maior que 50!'}"/>
        </c:when>
        <c:when test="${numero < 50}">
            <c:out value="${'Menor que 50!'}"/>
        </c:when>
        <c:otherwise>
            <c:out value="${'Igual à 50!'}"/>
        </c:otherwise>
    </c:choose>
    
    

    Assim como um laço foreach:

    
    <c:set var="numero" value="${100 / 2}"/>
    
    <c:forEach var="n" begin="1" end="${numero}">
        Item: ${n}
        <br/>
    </c:forEach>
    
    

    Criando um laço forToken, que quebra uma string com um caractere especificado:

    
    <c:forTokens items="nome-do-item-especificado" delims="-" var="nome">
        Nome: <c:out value="${nome}"/>
        <br/>
    </c:forTokens>
    
    

    Para "montar" uma URL:

    
    <c:url value="/acessoliberado.jsp" var="acesso">
        <c:param name="param1" value="1"/>
        <c:param name="param2" value="2"/>
        <c:param name="param3" value="3"/>
    </c:url>
    
    ${acesso}
    
    

    E para redirecionar:

    
    <c:set var="numero" value="${100 / 2}"/>
    
    <c:if test="${numero >= 50}">
        <c:redirect url="https://www.google.com.br"/>
    </c:if>
    <c:if test="${numero < 50}">
        <c:redirect url="http://www.javaavancado.com.br"/>
    </c:if>