【问题标题】:Passing Data from JSP to Servlet将数据从 JSP 传递到 Servlet
【发布时间】:2013-06-20 02:40:38
【问题描述】:

如标题中所述,我需要将数据从我的 JSP 页面传递到我的 servlet。 我将数据库中的数据加载到我的 JSP 页面中。 现在用户应该能够更改该数据。 所以我必须将更改的数据发送回我的 servlet 以更新我的数据库。 因此我想在我的 servlet 中使用 doPost() 方法

这是我的 JSP:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="content-script-type" content="text/javascript" />
    <meta http-equiv="content-style-type" content="text/css" />
    <meta http-equiv="content-language" content="de" />

    <link href="../resources/css/basic.css" type="text/css" rel="stylesheet" />

    <title>Edit Movie</title>
</head>

<body>
    <div id="wrapper">
        <h2 id="title">Edit Person</h2>
        <br></br>
        <br></br>
        <form id="1" class="appnitro"  method="post" action="">                     
            <ul>
                <li id="li_1" >
                    <label class="description" for="element_1">Name</label>
                    <div>
                        <input id="element_1" name="element_1" class="element text large" type="text" maxlength="255" value="${requestScope.person.name}"/> 
                    </div> 
                </li>       
                <li id="li_2" >
                    <label class="description" for="element_2">Deparment</label>
                    <div>
                        <input id="element_2" name="element_2" class="element text large" type="text" maxlength="255" value="${requestScope.person.department}"/> 
                    </div> 
                </li>   
                <li id="li_3" >
                    <label class="description" for="element_3">Job</label>
                    <div>
                        <input id="element_3" name="element_3" class="element text large" type="text" maxlength="255" value="${requestScope.person.job}"/> 
                    </div> 
                </li>       
                <li id="li_4" >
                    <label class="description" for="element_4">Biographie</label>
                    <div>
                        <textarea id="element_4" name="element_4" class="element textarea medium">${requestScope.person.biography}</textarea> 
                    </div> 
                </li>
                <li class="buttons">
                    <input type="hidden" name="form_id" value="652973" />
                    <input id="saveForm" class="button_text" type="submit" name="submit" value="Submit" />
                </li>
            </ul>
        </form>                 
    </div>
</body>
</html>

这是我没有doPost() 方法的Servlet:

import java.io.IOException;

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

import de.hof.university.spj.model.People;
import de.hof.university.spj.model.PeopleDAO;

public class SinglePersonEditServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private PeopleDAO peopleDao = new PeopleDAO();

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        String name = "id";
        String value = request.getParameter(name);

        int id = Integer.parseInt(value);

        People people = peopleDao.getPerson(id);

        request.setAttribute("person", people);

        RequestDispatcher reqDispatcher = request.getRequestDispatcher("../jsp/singlePersonEdit.jsp");
        reqDispatcher.forward(request, response);
    }
}

按下提交按钮后,我想发送更改的 数据到我的 servlet,以便我可以将其存储在我的数据库中。

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    为什么是String name = "id"; String value = request.getParameter(name);?我似乎在您的 JSP 中找不到任何输入 name = "id" ...

    在servlet中,你应该有这个(例如),这个:

    String element_1_value = request.getParameter("element_1") ;
    

    要么你忘记了 ID 为 name 的输入,要么我遗漏了一些东西。无论如何,这是您需要在代码中修复的问题。

    更不用说你忘记在表单标签的 action 属性中插入 servlet 的名称了,所以你有这个:

    <form id="1" class="appnitro"  method="post" action="">
    

    应该变成这样:

    <form id="1" class="appnitro"  method="post" action="SinglePersonEditServlet">
    

    最后,你的操作方法是"post"(如上面两行代码所示),在你使用doGet的问题的一段servlet中,你应该把你的代码放在doPost除非那是完成,否则在doPost 中调用doGet 就足够了。

    我自己也是一个初学者,所以当我看到它时我认出了它,我们都从某个地方开始,我会向您推荐这个 totu 或任何关于“使用 servlet 处理表单数据”的好搜索。

    注意this 的副本,请查看它以进一步学习:)。

    问候。

    【讨论】:

    • 这是来自另一个网站!!!我有一个网站 people.jsp,其中包含指向单身人士的链接: String name="id" 我需要从数据库中选择具有给定 id 的人并将其提供给我上面的 jsp 站点 postet。我的第一个输入是正确的,因为我希望文本字段显示数据库中实际保存的数据。用户现在应该能够更改文本字段的输入。这就是我想给我的 servlet 的东西。
    • 没关系,在你的元素中保留value="${requestScope.person.name}"。但对于其余部分,我认为您缺少一些关于如何使其发挥作用的基本概念。我编辑了我的答案看看:)
    • 否则:属性为 name 且值为 id 的元素在哪里?
    • doget 方法中的代码是针对另一种机制的... doget 代码在这里可以完全忽略这个问题^^ 我需要编写一个 dopost 方法但我实际上不知道如何获得我的表单中的信息到该 dopost 方法中。但我想你已经写过了:“String element_1_value = request.getParameter("element_1") ;"我会测试它
    • 哦,所以我认为您需要稍微澄清一下您的问题,因为您想将数据从表单获取到 servlet 中(无论您想做什么,它都会使用它)。实际上,您需要在表单getParameter 中传递某些输入的名称属性值。不要忘记填写我说的动作属性:)。
    猜你喜欢
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    相关资源
    最近更新 更多