我正在学习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>
答案 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中更正操作