Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将信息从Servlet发送回JSP_Java_Jsp_Servlets - Fatal编程技术网

Java 将信息从Servlet发送回JSP

Java 将信息从Servlet发送回JSP,java,jsp,servlets,Java,Jsp,Servlets,用户单击index.jsp页面上的edit,然后将其发送到editCustomer.jsp页面。问题是,当我单击“更新”时,它不会更新索引页上的客户信息 如何使用我拥有的代码来实现这一点 INDEX.JSP 我不确定你期望发生什么。您正在提交此表单 <form method='get' action='customer'> <table> <tr> <td>Name:</td>

用户单击index.jsp页面上的edit,然后将其发送到editCustomer.jsp页面。问题是,当我单击“更新”时,它不会更新索引页上的客户信息

如何使用我拥有的代码来实现这一点

INDEX.JSP
我不确定你期望发生什么。您正在提交此表单

<form method='get' action='customer'>
    <table>
        <tr>
            <td>Name:</td>
            <td>
                "
                <input name='name' />
            </td>
        </tr>
        <tr>
            <td>City:</td>
            <td>
                <input name='city' />
            </td>
        </tr>
        <tr>
            <td colspan='2' style='text-align:right'>
                <input type='submit' value='Update' />
            </td>
        </tr>
        <tr>
            <td colspan='2'>
                <a href='customer'>Customer List</a>
            </td>
        </tr>
    </table>
</form>

上述代码中的任何内容都不会修改客户列表中的任何内容。对象不会自行更改。你必须自己修改

也许你的意思是在提交表单时附带一个
POST
请求。在这种情况下,您需要为
id
设置一个
字段


考虑一下请求-响应周期


您的Servlet容器接收到一个HTTP请求,它会分派您的Servlet来处理它。servlet执行一些逻辑并转发给JSP。JSP呈现一些写入HTTP响应主体的HTML。响应被发送到客户端。在本例中,您的客户端是一个浏览器,它读取HTML文本并以图形方式呈现。然后,您可以与它交互,填写输入字段并单击按钮。执行此操作时,浏览器将获取您输入的值并生成一个HTTP请求,并将该请求发送到服务器。等等,等等…

无论你做什么,都不要使用Scriptlet。它可能是隐藏字段吗?@user2939808绝对是。但是你不想让用户选择哪个吗?不,当我单击“编辑”时,它会将我发送到表单IE editcustomer,并在url中为任何用户指定id。现在我只需要得到信息更新,当它重定向到索引页。我添加了一个隐藏字段(参见代码),但没有发生与此相同的情况before@user2939808你没有给它一个值,但在servlet中我给了。我想这就是我被困的地方。
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@page import="edu.witc.Assignment02.controller.CustomerServlet"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Edit Customer</title>
</head>
<body>
<h2>Edit Customer</h2> 
<% int customerId = 
                    Integer.parseInt(request.getParameter("id"));%>
 <form method='post' action='customer'>
  <input type='hidden' name ='id' value='<%=customerId%>'/>
  <table>

  <tr><td>Name:</td><td>"
 <input name='name' /> 
 </td></tr>
 <tr><td>City:</td><td>
<input name='city' />
</td></tr>
<tr>
<td colspan='2' style='text-align:right'>
<input type='submit' value='Update'/></td> 
</tr>
<tr><td colspan='2'>
<a href='customer'>Customer List</a>
</td></tr>
  </table>
            </form></body>


</html>
package edu.witc.Assignment02.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

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 edu.witc.Assignment02.*;
import edu.witc.Assignment02.model.Customer;

/*
 * Not thread-safe. For illustration purpose only
 */
@WebServlet(name = "CustomerServlet", urlPatterns = { 
        "/customer", "/editCustomer", "/updateCustomer"})
public class CustomerServlet extends HttpServlet {
    private static final long serialVersionUID = -20L;

    private List<edu.witc.Assignment02.model.Customer> customers = new ArrayList<Customer>();

    @Override
    public void init() throws ServletException {
        Customer customer1 = new Customer();
        customer1.setId(1);
        customer1.setName("Donald D.");
        customer1.setCity("Miami");
        customers.add(customer1);

        Customer customer2 = new Customer();
        customer2.setId(2);
        customer2.setName("Mickey M.");
        customer2.setCity("Orlando");
        customers.add(customer2);       
    }

    private void sendCustomerList(HttpServletResponse response, HttpServletRequest request)//redirect to index
            throws IOException, ServletException {
        String url = "/index.jsp";
        request.setAttribute("customers", customers);
        request.getRequestDispatcher(url).forward(request,response);




    }

    private Customer getCustomer(int customerId) {
        for (Customer customer : customers) {
            if (customer.getId() == customerId) {
                return customer;
            }
        }
        return null;
    }

    private void sendEditCustomerForm(HttpServletRequest request, 
            HttpServletResponse response) throws IOException, ServletException {

        String url = "/editCustomer.jsp";
        request.setAttribute("customers", customers);

        request.getRequestDispatcher(url).forward(request,response);
    }


    @Override
    public void doGet(HttpServletRequest request, 
            HttpServletResponse response)
            throws ServletException, IOException {
        String uri = request.getRequestURI();
        if (uri.endsWith("/customer")) {
            sendCustomerList(response, request);
        } else if (uri.endsWith("/editCustomer")) {
            sendEditCustomerForm(request, response);
        }

    }

    @Override
    public void doPost(HttpServletRequest request, 
            HttpServletResponse response)
            throws ServletException, IOException, ServletException {
        // update customer
        int customerId = 0;
        try {
            customerId = 
                    Integer.parseInt(request.getParameter("id"));
        } catch (NumberFormatException e) {
        }
        Customer customer = getCustomer(customerId);
        if (customer != null) {
            customer.setName(request.getParameter("name"));
            customer.setCity(request.getParameter("city"));
        }
        sendCustomerList(response, request);
    }
}
package edu.witc.Assignment02.model;

public class Customer {
    private int id;
    private String name;
    private String city;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
}
<form method='get' action='customer'>
    <table>
        <tr>
            <td>Name:</td>
            <td>
                "
                <input name='name' />
            </td>
        </tr>
        <tr>
            <td>City:</td>
            <td>
                <input name='city' />
            </td>
        </tr>
        <tr>
            <td colspan='2' style='text-align:right'>
                <input type='submit' value='Update' />
            </td>
        </tr>
        <tr>
            <td colspan='2'>
                <a href='customer'>Customer List</a>
            </td>
        </tr>
    </table>
</form>
if (uri.endsWith("/customer")) {
     sendCustomerList(response, request);
private void sendCustomerList(HttpServletResponse response, HttpServletRequest request)//redirect to index
        throws IOException, ServletException {
    String url = "/index.jsp";
    request.setAttribute("customers", customers);
    request.getRequestDispatcher(url).forward(request,response);
}