Как манипулировать сеансами используя API servlet в Java?

У меня есть в процессе веб сайт с Java США, но мне остается манипулировать login и реестром.

Я хотел бы, чтобы они дали мне путеводитель, из как сделать это посредством Servlets. Например, что .jsp registro.jsp пошлите посредством одного <form></form> к одному Servlet названный RegistroServlet. Эта часть реестра уже я считаю ее почти властвовавшей, НО я хотел бы манипулировать сеансом. Если он administrador, что система обнаружила это у меня, и если его один usuario registrado также. Так что, в зависимости от которого тип профиля имел, я redireccione в соответствующую страницу

Не если он подал информацию, но у меня есть база данных с таблицей usuario и другая TipoUsuario со связью @ManyToOne. Он верит в нее для того, чтобы, если он создается, пользователь нуждался в типе пользователя также. Как я делаю, чтобы манипулировать этим сеансом? Я новый в Java США, видел видео, но мне удается не показать ни одного тому, в чем я нуждаюсь, я благодарен за любую помощь заранее.

PD: уже в таблице TipoUsuario у меня есть два поля: Пользователь и Администратор

Base de datos, con las tablas <code>usuario</code> <code>tipoUsuario</code>

EDIT

registroUsuario.jsp

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link type="text/css" rel="stylesheet" href="../css/estilo.css">
    <title>Predicación pública - Registro</title>
</head>
<body>
    <br>
    <br>
    <br>
    <div class="register_form">
        <center>
            <fieldset>
                <legend align="center"><h1><strong>¡Regístrate!</strong></h1></legend>
                <form action="" method="POST">

                    <label for="nombre"><strong>Nombre: <div class="asterisco">*</div></strong></label><br>
                    <input type="text" name="nombre" required> <br>

                    <label for="apeliido"><strong>Apellido: <div class="asterisco">*</div></strong></label><br>
                    <input type="text" name="apellido" required><br>

                    <label for="usuario"><strong>Usuario: <div class="asterisco">*</div></strong></label><br>
                    <input type="text" name="usuario" required><br>

                    <label for="contrasena1"><strong>Elija su contraseña: <div class="asterisco">*</div></strong></label><br>
                    <input type="password" name="contrasena1" required><br>
                    <br>
                    <input type="submit" name="enviar" value="Aceptar">
                </form>
            </fieldset>
        </center>
    </div>
</body>

RegistroUsuarioServlet.java

package com.carrito.servlets;

import com.carrito.model.TipoUsuario;
import com.carrito.model.Usuario;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class RegistroPublicadorServlet extends HttpServlet {

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    String action= request.getServletPath();

    switch(action){
        case "/registroPublicador.":
        {
            String nombre = request.getParameter("nombre").trim();
            String apellido = request.getParameter("apellido").trim();
            String password = request.getParameter("passowrd");


            //implementación del método guardar
            Usuario usuario = new Usuario();
            usuario.setNombreUsuario(nombre);
            usuario.setContraseñaUsuario(password);

            TipoUsuario perfil = new TipoUsuario();
            perfil.setNombrePerfil("Administrador");

            usuario.setTipoUsuarioidTipoUsuario(perfil);
-1
задан 13.12.2018, 23:48
2 ответа

Чтобы получать / инициализировать ее sesiГіn от пользователя, достаточно называть объект HttpSession с request:

HttpSession session = request.getSession();
//colocar variables en la sesión
session.setAttribute("nombre variable de sesión", <objeto que quieres almacenar en sesión>);
//obtener variables de la sesión
//guarda todo como Object, el casteo es obligatorio
String nombre = (String)session.getAttribute("nombre");

RecomendaciГіn: Как кажется, estГЎs работая с Netbeans, который создает один mГ©todo processRequest для обоих, doGet и doPost. Это плохая одна prГЎctica и не deberГ-схватывай использовать это. doGet стоит для pre обрабатывать вид, в то время как doPost он служит для того, чтобы обработать ее acciГіn. Я рекомендую тебе действовать прямо на каждый mГ©todo.

2
ответ дан 24.11.2019, 12:05

Если он использует JavaEE, он мог бы склоняться тому, чтобы использовать лучше JSF, у которого уже есть зрелое управление сеансов и согласно стандарту java enterprise это осуществление Веб официального слоя.

официальная Информация java enterprise 7 jsf 6

Информация java enterprise edition 7 jsf

, Если он использует jsf, тогда может использовать объект, который называются FacesContext, который является тем, кто манипулирует всем связанным с сеансом следующего способа

FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
0
ответ дан 24.11.2019, 12:05
  • 1
    Muchí пропасти спасибо @Lcop. Sí я существую oí do много чудес JSF, и однажды закончите это, так как я буду начинать учиться có mo функционируй, так как он упрощает много вещей. Пока я делаю этот проект, который я должен вручать как можно скорее как часть курса. Así что я жалостно должен использовать JSP – Brian Martínez 14.12.2016, 15:06
  • 2
    @BrianMartí nez он очень похожий, если jsf он приходит из того, что имеется в jsp, смотрит этот post stackoverflow.com/questions/17419727/… – Lcop 14.12.2016, 15:08
  • 3
    Другая вещь @BrianMartí nez проверь в коде, что ты работаешь объект request, дебет возвращать объект сеанса с request.getSession () и это теоретически должен бы быть map, в котором сохраняют объекты, ассоциируемые с ключом, поэтому, когда он заверит, он будет должен сохранять это в этом map и в остальных налогах он будет должен получать объект, сохраняемый в map, если сеанс заканчивается возможно, не будет объекта – Lcop 14.12.2016, 15:36
  • 4
    ¿ Podrí схвати объяснять мне эту лучшую часть?. Большое спасибо. Дело в том, что в горе я изучаю Java США. С getSession () начало sesió n с объектом sesió n. Немного explicació n я vendrí в добро мой друг, если ты можешь – Brian Martínez 14.12.2016, 16:41
  • 5
    @BrianMartí nez предполагая, что уже у него есть логика базы данных, чтобы сохранять и консультировать данные тогда, изящество сеанса он будет, в котором в момент реализации login, было возможно сохранять в ней какую-то информацию, которую он позволял бы санкционировать, что сеанс не был побежден, и что пользователь соответствует тому, которой logueo, предварительный, которому в момент делания login Вы сделали соответствующие утверждения, чтобы определять, если пользователь - или нет Вашей системы, идея состоит в том, чтобы Вы сохраняли в сеансе какую-то информацию пользователя так что Вы после, когда Вы будете изменять страницы, всегда санкционировали в сеансе – Lcop 14.12.2016, 16:53