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