如何正确连接我的servlet和我的帖子?

时间:2018-12-02 00:30:22

标签: maven java-ee

我正在学习java maven项目,我只想知道在提交表单时如何正确地将发布表单与servlet连接。 我试图搜索,但无法获得我需要的正确答案。

我正在使用eclipse,这是我的文件夹组织! enter image description here

这是我的servlet:

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 :(得分:1)

注释(在您的情况下为@WebServlet)表示元数据。如果使用批注,则不需要web.xml文件(部署描述符),但是您应该拥有Tomcat 7,因为它将在早期版本的Tomcat服务器中无法运行。 @WebServlet批注用于映射具有指定名称的servlet。

Web应用程序部署描述符web.xml在Servlet 3.0中已成为可选属性。相反,容器在运行时将处理WEB-INF / classes中的类的注释。

如果要使用注释,请使用@WebServlet(value="/init")代替您的“名称”,并摆脱web.xml描述符。

如果您拥有src / servlet / Init.java,则将编译该类,并将其作为.class存储在以下层次结构中:

build/classes/servlet/Init.class

当容器在类定义上方看到注释时,它将检查指定文件夹中的.class文件,并解析对所需Servlet的调用。

如果您在点击“提交”按钮时有<form action="init" method="post">,则容器将在注释中搜索url模式,其余部分将按照之前所述进行工作。

答案 1 :(得分:0)

对于servlet 3.0 api,您不需要web.xml,可以改用批注,并在html中更正操作