Intereting Posts
Текстовое оформление: подчеркивание не применяется с элементами spanline-блока jQuery datepicker не будет работать с добавленным элементом AJAX html HTML-указатель списка, чтобы сохранить исходную нумерацию escaping внутри значения атрибута тега html Извлечение «скрытого» HTML с помощью Jsoup Как выполнить поиск с помощью API Карт Google? Позиция: абсолютные причины горизонтальной полосы прокрутки Как предотвратить разрыв текста между страницами в PDF-файле, созданным itext7.pdfhtml? Синтаксис регулярного выражения с переменным порядком относительное позиционирование с процентными значениями в верхнем свойстве Перейти к привязке ссылки на событие jquery click Стропы с точными совпадениями Использование пробелов до и после символа `=` атрибута элемента HTML Отправьте данные JSON на URL-адрес сервера с помощью Javascript Список элементов показать / скрыть разные и разделить div с jQuery

Java EE: получение параметров из POST для формы входа

Я пытаюсь реализовать простой сервлет входа, но он работает неправильно.

Я хотел бы знать , как передать параметры с помощью HTTP POST. Он уже работает с HTTP GET, но имя пользователя и пароль видны из URL-адреса. Было бы лучше скрыть их в POST.

web.xml

   home controller.HomeController   home /home  

Servlet:

 public class HomeController extends HttpServlet { private HttpSession session; private UserBean userBean; public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserBean user = new UserBean(); String userName = request.getParameter("username"); String password = request.getParameter("password"); user.setUsername(userName); user.setPassword(password); user = UserDAO.login(user); dispatch(request, response, ApplicationRessource.getInstance().getHomePage()); } protected void dispatch(HttpServletRequest request, HttpServletResponse response, String page) throws javax.servlet.ServletException, java.io.IOException { RequestDispatcher dispatcher = getServletContext() .getRequestDispatcher(page); dispatcher.forward(request, response); } } 

Проблема в том, что строки userName и password всегда пусты, что означает, что параметры никогда не извлекаются из POST. Что я делаю не так?

он должен работать, можете ли вы проверить, изменив метод формы, чтобы получить и попробовать, вы должны увидеть параметры в URL-адресе.

Попробуйте это

В вашем методе doPost (..) только doGet (..) и поместите всю свою логику в doGet (..) и проверьте, все ли он дает пустые значения.

Дайте мне знать, каков результат.

Пример:-

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserBean user = new UserBean(); String userName = request.getParameter("username"); String password = request.getParameter("password"); user.setUsername(userName); user.setPassword(password); user = UserDAO.login(user); dispatch(request, response, ApplicationRessource.getInstance().getHomePage()); } 

эта простая реализация должна была сработать .. но с тех пор, как ее нет, может быть, какой-то код, который манипулирует запросом. Код, который вы опубликовали, недостаточно для его определения.

Некоторые указатели, которые я могу дать,

  1. Проверьте свой web.xml чтобы узнать, есть ли какой-либо фильтр / перехватчик, который обрабатывает запрос.

  2. Какой сервер веб-приложений вы используете? Вы проверили реализацию метода service(Http...) HttpServlet. Вы можете try placing a debug point in service(..) method чтобы увидеть, имеет ли объект запроса требуемые параметры запроса. Если это не так, проблема возникает либо в каком-либо фильтре, либо в самом jsp.

  3. Что такое dispatch(request, response, ApplicationRessource.getInstance().getHomePage()); делать? Я знаю, что проблема перед этой строкой, но это не стандартный метод HttpServlet, поэтому я предполагаю, что есть намного больше пользовательского кода, чем то, что было опубликовано в вопросе выше.