【问题标题】:Getting user input from HTML to Java servlet using GlassFish使用 GlassFish 将用户输入从 HTML 获取到 Java servlet
【发布时间】:2017-10-22 03:04:23
【问题描述】:

这是我第一次尝试与 Java 进行 HTML 交互。我知道我需要使用 Java servlet 和 HTML 索引。我在本地 GlassFish 4 服务器上执行此操作。

我想要的是对我的 Java EE(Eclipse v4.5 (Mars))项目的简单用户输入。我不肯定如何做到这一点。我看过教程并阅读了多个指南,但没有一个明确解释交互。 (这就是为什么我知道我需要一个 servlet。)

到目前为止,这是我的设置,我不知道从哪里开始。

Java servelet

package servletPackage1;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GetUserInputServlet extends HttpServlet {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException{
        String userInput = req.getParameter("UserInput");

    }
}

我也不确定这是否设置正确,但是如何从我的索引文件中获取输入?

这是我的 index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>DSS</title>
</head>
<body>
<form action="DATASEARCH/GetUserInputServlet" method="get">
  Search for details:<br>
  <input type="text" name="text/plain" value="Enter search criteria">
  <br>

  <br><br>
  <input type="submit" class="btn-success btn-md" style="margin-right:5px" id="T1" value="Submit">
</form>

</html>

我发现我需要我的部署描述符(web.xml 文件)。我已经创建了一个,但在提交时我仍然收到 404。 XML 如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>DATASEARCH</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>Index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

这将连接到一个更大的项目(已完成并且运行良好)以在数据库中进行搜索。我只需要通过 Web 应用程序获取用户输入。对 HTML 也很陌生。

对于我正在寻找的答案:

  1. 我所做的有什么问题? (点击提交按钮时出现 404 错误)

  2. 如何将输入转换为字符串形式的 Java 变量?

现在我将只使用一个 servlet,因为我只需要从单个页面访问单个用户输入。我不太了解这个 servlet 映射,但我找不到有关如何映射的信息。任何帮助将不胜感激。

【问题讨论】:

  • 我也刚刚注意到我的 servlet 没有被 eclipse 识别为 servlet(这是自动的吗?还是我需要告诉项目它是一个 servlet?)如果需要任何澄清...不要犹豫,问
  • 请发布您的 web.xml。 404 表示映射不正确。所以在提交时,您正试图向&lt;host&gt;:&lt;port&gt;[&lt;context path&gt;]DATASEARCH/GetUserInputServlet 网址发送一些找不到的东西。
  • 我在这里可能听起来很愚蠢,但我没有 XML?我什么都没写?这与我的 .jsp 类似吗?
  • 你的servlet是如何注册的?应用服务器如何知道哪个 URL 应该由哪个 servlet 处理?
  • 好问题,我想这是我必须研究的问题,因为我不知道。 :) 另外,我注意到我的 servlet 没有被识别为 servlet……这是自动完成的还是我必须告诉项目它不是 servlet?

标签: java html jsp servlets glassfish


【解决方案1】:

您需要在部署描述符 (web.xml) 中添加 servlet 映射

    <servlet-mapping>
        <servlet-name>GetUserInputServlet</servlet-name>
        <url-pattern>GetUserInputServlet</url-pattern>
   </servlet-mapping>

这意味着每当您访问 URL GetUserInputServlet 时,控制权都会转移到名为 GetUserInputServlet 的 servlet。

【讨论】:

    【解决方案2】:

    在 from 操作中,您只需要添加 servlet 名称,并且输入类型名称必须在两个位置相同 例子 在 html 中

    在小服务程序中

    String abc=request.getparameter("abc");

    如果不使用 web.xml,你也可以在 servlet 中在 servlet 类名之前使用注解,例如

    @webservlet

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2021-10-04
      • 2022-11-16
      • 1970-01-01
      • 2018-07-16
      相关资源
      最近更新 更多