Как правильно связать мой сервлет с формой почты? - PullRequest
0 голосов
/ 02 декабря 2018

Я изучаю проект Java Maven, и я просто хочу знать, как я могу правильно связать свою форму сообщения с моим сервлетом, когда я отправляю форму.Я пытался найти, но не могу получить правильный ответ, который мне нужен.

Я работаю с Eclipse, и это моя организация папок! введите описание изображения здесь

это мой сервлет:

package servlet;

import java.io.IOException;

import javax.security.auth.message.callback.PrivateKeyCallback.Request;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


@WebServlet(name="Init")
public class Init extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.getRequestDispatcher("/index.jsp").forward(request, response);
	}
	
	
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
	    /*Creation et initialisation du message */
	
		
     //creation de la session
     HttpSession session=request.getSession();
     
     //pseudo user
     String name=request.getParameter("pseudo");
     session.setAttribute("usersession", name);
    
     
     //redirection après application du servlet INIT
     this.getServletContext().getRequestDispatcher("/interface.jsp").forward(request, response);
     
	}
}

это мой web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
  <display-name>Archetype Created Web Application</display-name>
  
  
  
<servlet>
    <servlet-name>Init</servlet-name>
    <servlet-class>src.main.java.servlet.Init</servlet-class>
</servlet>


<servlet-mapping>
 	<servlet-name>Init</servlet-name>
 	<url-pattern>/test</url-pattern>
</servlet-mapping>
  
</web-app>

это мой index.jsp, который содержит мою форму:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Chatons !</title>
</head>
<body>
<h1>Bienvenue sur Chatons.org</h1>
<form method="post" action="/java/servlet/Init">
    <p>
        Entrez votre pseudo :
        <input type="text" name="pseudo">
        <input type="submit" value="Connexion">
    </p>
</form>
</body>

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Для сервлетов 3.0 api вам не нужен web.xml, вместо этого вы можете использовать аннотации, исправили ли вы действие в html

0 голосов
/ 02 декабря 2018

Аннотация (в вашем случае @WebServlet) представляет метаданные.Если вы используете аннотацию, файл web.xml (дескриптор развертывания) не требуется, но у вас должен быть Tomcat 7, поскольку он не будет работать в предыдущих версиях сервера Tomcat.Аннотация @WebServlet используется для сопоставления сервлета с указанным именем.

Дескриптор развертывания веб-приложения web.xml стал необязательным в Servlet 3.0.Вместо этого контейнер во время выполнения будет обрабатывать аннотации классов в WEB-INF / classes.

Используйте @WebServlet(value="/init") вместо своей с именем 'name и избавьтесь от своего дескриптора web.xml, если выпредпочитайте аннотации.

Если у вас есть src / servlet / Init.java, этот класс скомпилирован и будет сохранен как .class в следующей иерархии:

build/classes/servlet/Init.class

Когда контейнер видитаннотацию над определением класса он проверит файл .class в указанной папке и разрешит вызов для требуемого сервлета.

Если у вас есть <form action="init" method="post"> при нажатии кнопки отправки контейнеразатем ищет шаблон URL в аннотации, а остальные работают, как сказано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...