Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 使用JSP更改视图(从MVC)_Java_Jsp_Servlets_Model View Controller - Fatal编程技术网

Java 使用JSP更改视图(从MVC)

Java 使用JSP更改视图(从MVC),java,jsp,servlets,model-view-controller,Java,Jsp,Servlets,Model View Controller,我正在尝试使用MVC编写一个web应用程序。我有bean、jsp和servlet。 我想要完成的是:用户将能够在表中创建(购物)列表。该表将有一个显示创建日期的thead。然后它将创建包含3列的行(1-id,2-product name,3-a'bunded'链接)。当用户单击“购买”链接时,它将从第3列中删除该链接,并将产品名称变为绿色。 在表之外的某个地方会有另一个链接,允许用户创建一个新列表。如果存在现有列表,则尚未“购买”的产品将自动转到新列表。一旦用户单击“创建新列表”链接,它将只显示

我正在尝试使用MVC编写一个web应用程序。我有bean、jsp和servlet。 我想要完成的是:用户将能够在表中创建(购物)列表。该表将有一个显示创建日期的thead。然后它将创建包含3列的行(1-id,2-product name,3-a'bunded'链接)。当用户单击“购买”链接时,它将从第3列中删除该链接,并将产品名称变为绿色。 在表之外的某个地方会有另一个链接,允许用户创建一个新列表。如果存在现有列表,则尚未“购买”的产品将自动转到新列表。一旦用户单击“创建新列表”链接,它将只显示新列表(如果有未购买的产品)

我目前有问题:日期将不会显示,只有在购买的链接被点击,但当点击它不会变成绿色文本或删除“购买”链接

这是我的代码,任何帮助都将不胜感激。多谢各位

Item.java

import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Item {
//property names
String name;
Integer id;
boolean available = true;
Format formatter = new SimpleDateFormat("MM/dd/yyyy");
String today = formatter.format(new Date());

public Item(Integer id, String name, boolean available){
    this.id = id;
    this.name = name;
    this.available = available; 
}

public String getToday() {
    return today;
}

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public boolean isAvailable() {
    return available;
}

public void setAvailable(boolean available) {
    this.available = available;
}
}
DisplayList.jsp

<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Grocery List</title>
</head>
<body>

<h1>Grocery List</h1>

<table border='1'>
<tr><th colspan='3'>${entry.today}</th></tr>

<c:forEach items="${entries}" var="entry">
<tr>
<td>${entry.id}</td>
<c:choose>
    <c:when test="${entry.available != false }">
        <td>${entry.name}</td>
        <td><a href="Bought?id=${entry.id}">Bought</a></td>
    </c:when>
    <c:when test="${entry.available != true }">
        <td style="color:green;" >${entry.name}</td>
        <td></td>
    </c:when>
</c:choose>
</tr>
</c:forEach>
<tr>
<form action="Groceries" method="post">
<td colspan='2'><input type="text" name="product" /></td>
<td><input type="submit" name="add" value="Add" /></td>
<p><input type="button" name="new" value="New List" /></p>
</form>
</tr>
</table>
</body>
</html>

杂货清单
杂货清单
${entry.today}
${entry.id}
${entry.name}
${entry.name}

Groceries.java

import java.io.IOException;
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;

@WebServlet("/Groceries")
public class Groceries extends HttpServlet {
private static final long serialVersionUID = 1L;

int y = 3;

public Groceries() {
    super();
}

public void init(ServletConfig config) throws ServletException {
    super.init( config );
    List<Item> entries = new ArrayList<Item>();
    entries.add( new Item(1, "Milk", true) );
    entries.add( new Item(2, "Soda", true) );

    getServletContext().setAttribute( "entries", entries );

}

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

    request.getRequestDispatcher("/WEB-INF/DisplayList.jsp").forward(request, response);
}

@SuppressWarnings("unchecked")
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String name = request.getParameter("product");
    Item entry = new Item(y, name, true);
    y++;

    List<Item> entries = (List<Item>) getServletContext().getAttribute("entries");
    entries.add( entry );
    response.sendRedirect("Groceries");

}

}
import java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入javax.servlet.ServletConfig;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
@WebServlet(“/杂货店”)
公共类杂货扩展HttpServlet{
私有静态最终长serialVersionUID=1L;
int y=3;
公共食品杂货(){
超级();
}
public void init(ServletConfig config)抛出ServletException{
super.init(config);
列表项=新的ArrayList();
添加(新项目(1,“牛奶”,正确);
添加(新项目(2,“苏打水”,正确));
getServletContext().setAttribute(“条目”,条目);
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
getRequestDispatcher(“/WEB-INF/DisplayList.jsp”).forward(请求,响应);
}
@抑制警告(“未选中”)
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
字符串名称=request.getParameter(“产品”);
项目条目=新项目(y,名称,真);
y++;
列表条目=(列表)getServletContext().getAttribute(“条目”);
条目。添加(条目);
答复:食品(“杂货”);
}
}
java

import java.io.IOException;
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;

@WebServlet("/Bought")
public class Bought extends HttpServlet {
private static final long serialVersionUID = 1L;

public Bought() {
    super();
}

/**
 * Given an id, retrieve the List entry.
 */
@SuppressWarnings("unchecked")
private Item getEntry( Integer id )
{
    List<Item> entries = (List<Item>) getServletContext().getAttribute("entries" );

    for( Item entry : entries )
        if( entry.getId().equals( id ) ) 
            return entry;

    return null;
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // get the entry to be edited
    Integer id = Integer.valueOf( request.getParameter( "id" ) );
    Item entry = getEntry( id );

    // pass the entry to jsp using request scope
    request.setAttribute( "entry", entry );
    request.getRequestDispatcher( "/WEB-INF/DisplayList.jsp" ).forward(request, response );
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // get the entry to be edited
    Integer id = Integer.valueOf( request.getParameter( "id" ) );
    Item entry = getEntry( id );

    // change the entry based on user input
    entry.setAvailable(true);

    // send the user back to the guest book page
    request.getRequestDispatcher( "/WEB-INF/DisplayList.jsp" ).forward(request, response );
}

}
import java.io.IOException;
导入java.util.List;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
@WebServlet(“/购买”)
公共类扩展HttpServlet{
私有静态最终长serialVersionUID=1L;
公众购买(){
超级();
}
/**
*给定id,检索列表条目。
*/
@抑制警告(“未选中”)
私有项getEntry(整数id)
{
列表条目=(列表)getServletContext().getAttribute(“条目”);
用于(项目条目:条目)
if(entry.getId().equals(id))
返回条目;
返回null;
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
//获取要编辑的条目
Integer id=Integer.valueOf(request.getParameter(“id”);
项目条目=获取条目(id);
//使用请求范围将条目传递给jsp
request.setAttribute(“entry”,entry);
getRequestDispatcher(“/WEB-INF/DisplayList.jsp”).forward(请求,响应);
}
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
//获取要编辑的条目
Integer id=Integer.valueOf(request.getParameter(“id”);
项目条目=获取条目(id);
//根据用户输入更改条目
entry.setAvailable(true);
//将用户发送回留言簿页面
getRequestDispatcher(“/WEB-INF/DisplayList.jsp”).forward(请求,响应);
}
}

应替换以下链接以在JSP中映射servlet

<a href="<c:url value='/Bought'><c:param name='id' value='${entry.id}'/></c:url>">Bought</a>

您需要剥离代码,以显示您认为错误来自的更具体区域。这样,您将得到更快的答复。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // get the entry to be edited
    Integer id = Integer.valueOf( request.getParameter( "id" ) );
    Item entry = getEntry( id );
    entry.setAvailable(false);
    // pass the entry to jsp using request scope
    request.setAttribute( "entry", entry );
    request.getRequestDispatcher( "/WEB-INF/DisplayList.jsp" ).forward(request, response );
}