如何正确连接我的 servlet 和我的帖子表单? [复制]

Posted

技术标签:

【中文标题】如何正确连接我的 servlet 和我的帖子表单? [复制]【英文标题】:How to connect properly my servlet with my post form? [duplicate] 【发布时间】:2019-05-03 17:11:22 【问题描述】:

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

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

这是我的 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>

【问题讨论】:

你在哪里运行这个? 感谢您的回答,但我不明白您的意思。请说清楚。 我的意思是,在什么应用服务器和版本(即tomcat6,tomcat 7,jboss 7.0.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 的调用。

如果您在点击提交按钮时拥有&lt;form action="init" method="post"&gt;,则容器会在注释中搜索 url 模式,其余的工作如前所述。

【讨论】:

我试图应用你所说的,所以我从 web.xml 中删除了 servlet 映射,但它不起作用。 你没有读好...我没有说只是删除 servlet 映射,我说“...web.xml 文件(部署描述符)不是必需的”也许你没有申请正确我的解决方案。问候。【参考方案2】:

对于 servlet 3.0 api,您不需要 web.xml,您可以使用注释代替,您是否更正了 html 中的操作

【讨论】:

以上是关于如何正确连接我的 servlet 和我的帖子表单? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何设计我的 UITests 与表单连接的多个视图?

如何隐藏博客帖子表单主页

5.简述Servlet与表单如何交互?

引导网格未正确对齐

React Hooks(useEffect) 表单子任务

如何正确地将参数传递给rails表单