Quantcast
Channel: Active questions tagged servlets - Stack Overflow
Viewing all articles
Browse latest Browse all 675

Changing view (from MVC) using JSP and servlet

$
0
0

I'm attempting to write a web application using MVC. I have the bean, the JSP, and servlets.

What I want to accomplish: the user will be able to create a (shopping) list in a table. The table will have a head that shows the day it was created. Then it will create rows with 3 columns (1 - id, 2 -name of product, 3 - a bought link). When the user clicks on the bought link, it will remove the link from the 3 column and will turn the name of the product green.

There will be another link somewhere outside of the table, that will let the user to create a new list. If there is an existing list, then the products, that have not been bought yet, would automatically go to the new list.

Once the user clicks the create new list link, it will only display the new list (with unpurchased products if any).

I am currently having issues with: the date will not display only, until the bought link is clicked, but when clicked, it will not turn the text green or remove the bought link.

Here is my code:

Item.java:

import java.text.Format;import java.text.SimpleDateFormat;import java.util.Date;public class Item {//property namesString 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>

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");}}

Bought.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 );}}

Viewing all articles
Browse latest Browse all 675

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>