如何正确连接我的 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 的调用。
如果您在点击提交按钮时拥有<form action="init" method="post">
,则容器会在注释中搜索 url 模式,其余的工作如前所述。
【讨论】:
我试图应用你所说的,所以我从 web.xml 中删除了 servlet 映射,但它不起作用。 你没有读好...我没有说只是删除 servlet 映射,我说“...web.xml 文件(部署描述符)不是必需的”也许你没有申请正确我的解决方案。问候。【参考方案2】:对于 servlet 3.0 api,您不需要 web.xml,您可以使用注释代替,您是否更正了 html 中的操作
【讨论】:
以上是关于如何正确连接我的 servlet 和我的帖子表单? [复制]的主要内容,如果未能解决你的问题,请参考以下文章