Java 将数据从servlet传输到jsp页面

Java 将数据从servlet传输到jsp页面,java,jsp,servlets,Java,Jsp,Servlets,我想去掉servlet中的printWriter代码 基本上,我想用id输出当前客户及其各自的城市,id是索引页面上的一个隐藏字段。从那里我想能够编辑客户名称或城市,然后将其发送回索引页面,在那里信息将被更新 我该怎么做 Servlet package edu.witc.Assignment02.controller; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; imp

我想去掉servlet中的printWriter代码

基本上,我想用id输出当前客户及其各自的城市,id是索引页面上的一个隐藏字段。从那里我想能够编辑客户名称或城市,然后将其发送回索引页面,在那里信息将被更新

我该怎么做

Servlet

 package edu.witc.Assignment02.controller;

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

import javax.servlet.ServletConfig;
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_model.*;

/**
 * Servlet implementation class CustomerServlet
 */
@WebServlet(name = "CustomerServlet", urlPatterns = {
        "/customer", "/editCustomer", "/updateCustomer"
})
public class CustomerServlet extends HttpServlet {
    private static final long serialVersionUID = -20L;

    private List<Customer> customers = new ArrayList<Customer>();


    /**
     * @see HttpServlet#HttpServlet()
     */
    public CustomerServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

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

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

    private void sendCustomerList(HttpServletResponse response) throws IOException {
        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();
        writer.println("<html><head><title>Customers</title></head>" 
                + "<body><h2>Custoemrs</h2>");
        writer.println("<ul>");
        for (Customer customer : customers){
            writer.println("<li>" + customer.getName() 
                   + "(" + customer.getCity() + ") (" 
                   + "<a href='editCustomer?id=" + customer.getId()
                   + ";>edit</a>)");
        }
        writer.println("</ul>");
        writer.println("</body></html>");
    }

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

    private void sendEditCustomerForm(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();
        Integer customerId = 0;
        try{
            customerId = Integer.parseInt(request.getParameter("id"));
        }catch(NumberFormatException e){

            }
        Customer customer = getCustomer(customerId);

        if(customer != null){
            writer.println("<html><head>"
                    + "<title>Edit Customer</title></head>"
                    + "<body><h2>Edit Customer</h2>"
                    + "<form method = 'post' action = 'updateCustomer'>");
            writer.println("<input type = 'hidden' name = 'id' value = 'customerId'/>");
            writer.println("<table>");
            writer.println("<tr><td>Name:</td><td>"
                    + "<input name = 'name' value = '"
                    + customer.getName().replaceAll("'", "&#39")
                    + "'/></td></tr>");
            writer.println("<tr><td>City:</td><td>"
                    + "<input name = 'city' value = '"
                    + customer.getCity().replaceAll("'", "&#39")
                    + "'/></td></tr>");
            writer.println("<tr>"
                    + "<td colspan='2' style = 'text-align: right'>"
                    + "<input type ='submit' value = 'Update'/></td>"
                    + "</tr>");
            writer.println("<tr><td colspan='2'>"
                    + "<a href = 'customer'>CustomerList</a>"
                    + "</td></tr>");
            writer.println("</table>");
            writer.println("</form></body>");
        }else{
            writer.println("No Customer Found");

        }
        }

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

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //update customer
        Integer 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);
    }

}
索引页



家
当前客户与城市

迟做总比不做好

好的,要使其工作,您应该将库添加到项目中

Servlet

 @WebServlet(name = "CustomerServlet", urlPatterns = {
        "/customer", "/editCustomer", "/updateCustomer"
})
public class CustomerServlet extends HttpServlet {
    private static final long serialVersionUID = -20L;

    private List<Customer> customers = new ArrayList<Customer>();

    @Override
    public void init() throws ServletException {
        Customer customer1 = new Customer();
        ...
        customers.add(customer1);

        Customer customer2 = new Customer();
        ...
        customers.add(customer2);
    }

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


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String uri = request.getRequestURI();
        if(uri.endsWith("/customer")){

            request.setAttribute("customers", customers);
            request.getRequestDispatcher("/customers.jsp").forward(request, response);

        }else if(uri.endsWith("/editCustomer")){

            try{
                customerId = Integer.parseInt(request.getParameter("id"));
            }catch(NumberFormatException e){
                e.printStackTrace();
            }
            Customer customer = getCustomer(customerId);

            request.setAttribute("customer", customer);
            request.getRequestDispatcher("/edit_customer.jsp").forward(request, response);

        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        Integer 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"));
        }
        response.sendRedirect("/customer");
    }

}
@WebServlet(name=“CustomerServlet”,urlPatterns={
/customer“,/editCustomer“,/updateCustomer”
})
公共类CustomerServlet扩展了HttpServlet{
私有静态最终长serialVersionUID=-20L;
private List customers=new ArrayList();
@凌驾
public void init()引发ServletException{
客户customer1=新客户();
...
customers.add(customer1);
Customer customer2=新客户();
...
customers.add(customer2);
}
私有客户getCustomer(整数customerId){
用于(客户:客户){
if(customer.getId()==customerId){
退货客户;
}
}
返回null;
}
@凌驾
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
字符串uri=request.getRequestURI();
if(uri.endsWith(“/customer”)){
request.setAttribute(“客户”,客户);
request.getRequestDispatcher(“/customers.jsp”).forward(请求,响应);
}else if(uri.endsWith(“/editCustomer”)){
试一试{
customerId=Integer.parseInt(request.getParameter(“id”);
}捕获(数字格式){
e、 printStackTrace();
}
Customer=getCustomer(customerId);
request.setAttribute(“客户”,客户);
request.getRequestDispatcher(“/edit_customer.jsp”).forward(请求,响应);
}
}
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
整数customerId=0;
试一试{
customerId=Integer.parseInt(request.getParameter(“id”);
}捕获(数字格式){
}
Customer=getCustomer(customerId);
如果(客户!=null){
customer.setName(request.getParameter(“name”);
customer.setCity(request.getParameter(“city”);
}
响应。发送重定向(“/customer”);
}
}
customers.jsp

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

<h1>Customer list</h1>

<ul>
<c:forEach var="c" items="${customers}">
    <li>${c.name} (<a href="editCustomer?id=${c.id}">Edit</a>)</li>
</c:forEach>
</ul>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="false" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<h1>Edit customer</h1>

<form method="POST" action="/updateCustomer">
    <input type="hidden" name="id" value="${customer.id}"/>
    Name: <input type="text" name="name" value="${customer.name}"/><br/>
    City: <input type="text" name="city" value="${customer.city}"/><br/>
    <input type="submit" value="Save"/>

</form>

客户名单
  • ${c.name}()
编辑_customer.jsp

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

<h1>Customer list</h1>

<ul>
<c:forEach var="c" items="${customers}">
    <li>${c.name} (<a href="editCustomer?id=${c.id}">Edit</a>)</li>
</c:forEach>
</ul>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="false" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<h1>Edit customer</h1>

<form method="POST" action="/updateCustomer">
    <input type="hidden" name="id" value="${customer.id}"/>
    Name: <input type="text" name="name" value="${customer.name}"/><br/>
    City: <input type="text" name="city" value="${customer.city}"/><br/>
    <input type="submit" value="Save"/>

</form>

编辑客户
名称:
城市:

嘿,非常感谢。。。我唯一没有得到的是${customer.name}之类的东西。有没有一个扩展的方法可以做到这一点,或者你可以广告评论。感谢${customer}是您从servlet传递到jsp的请求属性“request.setAttribute(“customer”,customer);“name,city-customer对象的字段,您应该在customer对象中有getter/setters方法。出于某种原因,它说taglib不起作用。您应该像我上面提到的那样,将jstl添加为您的库项目。如果servlet容器不包含jstl,那么也应该部署它