se você estiver trabalhando com um usuário logado, você pode verificar dentro da servlet se a sessão é ativa e se ele pode realizar a função (nivel de acesso), se não tiver nenhum desses, xuta que é macumba!
ele não esta logado ainda, é uma tela de cadastro de usuario. eu tenho como ver se um request está em branco ou algo do tipo?
essa é uma opção. Como o usuário ainda não está logado, verifique justamente isso, se ele não estiver, chuta ele pra fora, faça o redirect via servlet mesmo
como eu vejo se o request está null? e estou fazendo isso da maneira correta? com o JSP passando tudo para o Servlet e o Servlet apenas verificando os dados e passando para outra camada?
Verifica se tem alguem logado aqui, se não tiver, redireciona
HttpSession session = request.getSession(true);
mas eu crio um sessão mesmo sem o usuario estar logado?
é a melhor maneira, amigo?
existem n formas de se fazer isso, uma delas seria verificar se a sessão é ativa, outra seria você enviar um parâmetro via request para saber se pode ou não acessar. Estas são formas bem conhecidas, tudo depende de como você quer tratar a informação, você pode até mesmo colocar as 2 formas em prática, por exemplo, se uma sessao estiver ativa, verificar se o atributo consta, se ambos forem verdadeiros, então ele realiza a solicitação, caso algum seja falso, então redirecionar para aonde você deseja.
eu gostaria apenas de redicionar o usuario para a página inicial, quando ele fosse acessar o servlet diretamente… mas todos os parametros seriam nulos?
eu poderia comparar “request == null” e redirecionar no inicio do servlet?
estou perdido nessa parte… gostaria de fazer da maneira mais simples possivel
posta o teu servlet aí
eu não estou com o codigo aqui, mas de noite eu postarei
usando session, eu não poderia sobrecarregar o servidor sem necessidade?
eu quero algo do tipo: se o usuario não vier da pagina de cadastro, o Servlet (addUser) redireciona automaticamente para a pagina de cadastro. o Servlet só pode ser acessado se vier da pagina de cadastro…
alguém?
[code] protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter(“name”);
String mail = request.getParameter(“mail”);
String password = request.getParameter(“password”);
String retype = request.getParameter(“retype-password”);
String birthday = request.getParameter(“birthday”);
User user = new User(name, mail, password, new GregorianCalendar());
UserDAO dao = UserDAO.getInstance();
if (dao.create(user)) {
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet CreateAccount</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>" + request.getParameter("name") + "</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}[/code]
esse é o meu código…
se eu acesso ele diretamente, vai dar erro, pois ele procura pelos parametros, como faço para redirecionar?
valeu
ninguem sabe?
Isso deve resovler o problema, se o usuário tentar acessar o teu servlet sem vir daquela página, ele vai ser redirecionado para onde tu quer, caso contrário, ele vai fazer o que tem que ser feito.
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (!request.getRequestURL().toString().equals("<<aqui vem o endereço de onde ele deve aceitar>>")){
//se não for igual a url que tem que ser faça isso
response.sendRedirect("/NomeDoTeuProjeto/endereçoAondeTemQueIr");
} else {
String name = request.getParameter("name");
String mail = request.getParameter("mail");
String password = request.getParameter("password");
String retype = request.getParameter("retype-password");
String birthday = request.getParameter("birthday");
User user = new User(name, mail, password, new GregorianCalendar());
UserDAO dao = UserDAO.getInstance();
if (dao.create(user)) {
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet CreateAccount</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>" + request.getParameter("name") + "</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
}
perfeito, mas se o endereço que ele deve aceitar possuir parametros nele? a pagina é: criar.jsp, mas pode ser criar.jsp?erro=1 ou criar.jsp?erro=2 e outros diversos “erro=?”
eu tenho como por uma expressao regular ou algo do tipo que aceite tudo com “create.jsp”?
aí basta tu trabalhar com a String. Se tu quiser que seja exatamente aquilo, então acabou ali, caso contrário, você pode utilizar o contains() da String
essa função busca uma sequencia de caracteres
String a = "abcd";
System.out.println(a.contains("ab"));
//resultado == true
System.out.println(a.contains("jd"));
//resultado == false
amigo, o codigo:
if (!request.getRequestURL().toString().equals("<<aqui vem o endereço de onde ele deve aceitar>>")){
//se não for igual a url que tem que ser faça isso
response.sendRedirect("/NomeDoTeuProjeto/endereçoAondeTemQueIr");
}
não funcionou, ele sempre pega a string do servlet… nunca pega da página que redireciona para o servlet, sabe por que?
Você está trabalhando com MVC? Já que você tem um JSP separado para Cadastro, porque não separar tudo?
Siga os conceitos de MVC, além de separar melhor código Java de código HTML, fica mais fácil para quem está tentando te ajudar, visualizar onde pode estar ocorrendo o erro.
Já tentou utilizando os métodos doGet e doPost?