让删除按钮工作 Java Servlet
Getting remove button to work Java Servlet
我有一个名为 LeggTilHandlekurv (shoppingCart) 的 servlet、一个 jsp 和一个 Vare (Item) class。意思是将商品添加到 shoppingCart 并且效果很好,但问题是我怎样才能让删除功能起作用?在 leggtilhandlekurv.jsp 中,您可以选择输入一个项目,该项目将与一个删除按钮一起显示。我希望删除按钮起作用。到目前为止,我的尝试是在 servlet class 中标出的,从 if(vare.equals("remove")).
开始
@WebServlet("/"+LEGGTILHANDLEKURV_URL)
public class LeggTilHandlekurv extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("leggtilhandlekurv.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session= request.getSession();
String varen=request.getParameter("vare");
Vare vare=new Vare();
vare.setVareNavn(varen);
ArrayList<Vare> varer = new ArrayList<Vare>();
varer.add(vare);
if(request.getServletContext().getAttribute("handlekurv")!=null) {
varer=(ArrayList<Vare>) request.getServletContext().getAttribute("handlekurv");
varer.add(vare);
request.getServletContext().setAttribute("handlekurv", varer);
}
else {
request.getServletContext().setAttribute("handlekurv", varer);
}
response.sendRedirect("leggtilhandlekurv.jsp");
/*
if(vare.equals("remove")) {
varer=(ArrayList<Vare>) session.getAttribute("handlekurv");
varer.remove(vare);
session.setAttribute("handlekurv", varer);
request.getRequestDispatcher("leggtilhandlekurv.jsp").forward(request, response);
}
*/
}
}
public class Vare {
private String vareNavn;
public String getVareNavn() {
return vareNavn;
}
public void setVareNavn(String vareNavn) {
this.vareNavn=vareNavn;
}
}
<%@page import="oppgave1.Vare"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Handleliste</title>
</head>
<body>
<%
if(session.getAttribute("pass")==null){
response.sendRedirect("login.jsp");
}
%>
<h1>Min handleliste</h1>
<form action="LeggTilHandlekurv" method="post">
Legg til vare: <br>
<input type="text" name="vare"> <br>
<input type="submit" value="Add item">
</form>
<table>
<th>Varer</th>
<%
ArrayList<Vare> varer = new ArrayList<Vare>();
if(request.getServletContext().getAttribute("handlekurv")!=null){
varer=(ArrayList<Vare>) request.getServletContext().getAttribute("handlekurv");
if(!varer.isEmpty()){
for(Vare vare: varer){
%>
<tr>
<td> <%=vare.getVareNavn() %></td>
<td> <input type="submit" name="remove" value="Remove item"> </td>
</tr>
<%
}
}
}
%>
</table>
</body>
</html>
您可以使用值为 vareNavn
的隐藏输入字段和将表单提交给 servlet 并获得响应的表单标签。因此,您的 jsp 代码将如下所示:
<td>
<form action="LeggTilHandlekurv" method="post">
<!-- hidden input-->
<input type="text" hidden name="item" value="<%=vare.getVareNavn() %>">
<!--added name attribute-->
<input type="submit" name="remove" value="Remove item">
</form>
</td>
然后,在您的 servlet doPost
方法中,您需要获取隐藏的输入值,即 item
,然后将该值与存储在 session
中的值进行比较,如果匹配我们只需要从会话中删除该值。因此,您的 doPost
方法代码将如下所示:
//check if request is for remove
if (request.getParameter("remove") != null) {
//get values
String item = request.getParameter("item");
//get data from session
ArrayList<Vare> varer1 = (ArrayList<Vare>) request.getServletContext().getAttribute("handlekurv");
Iterator<Vare> it = varer1.iterator();
//iterate through datas
while (it.hasNext()) {
Vare name = it.next();
//check if values matches
if (name.getVareNavn().equals(item)) {
it.remove(); //remove
}
}
//pass updated value to jsp page
session.setAttribute("handlekurv", varer1);
request.getRequestDispatcher("leggtilhandlekurv.jsp").forward(request, response);
}
此外,在此处 name 属性 <input type="submit" name="add" value="Add item">
并将用于添加新值的所有代码放入 if(request.getParameter("add") != null){ //put code here }
我有一个名为 LeggTilHandlekurv (shoppingCart) 的 servlet、一个 jsp 和一个 Vare (Item) class。意思是将商品添加到 shoppingCart 并且效果很好,但问题是我怎样才能让删除功能起作用?在 leggtilhandlekurv.jsp 中,您可以选择输入一个项目,该项目将与一个删除按钮一起显示。我希望删除按钮起作用。到目前为止,我的尝试是在 servlet class 中标出的,从 if(vare.equals("remove")).
开始@WebServlet("/"+LEGGTILHANDLEKURV_URL)
public class LeggTilHandlekurv extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("leggtilhandlekurv.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session= request.getSession();
String varen=request.getParameter("vare");
Vare vare=new Vare();
vare.setVareNavn(varen);
ArrayList<Vare> varer = new ArrayList<Vare>();
varer.add(vare);
if(request.getServletContext().getAttribute("handlekurv")!=null) {
varer=(ArrayList<Vare>) request.getServletContext().getAttribute("handlekurv");
varer.add(vare);
request.getServletContext().setAttribute("handlekurv", varer);
}
else {
request.getServletContext().setAttribute("handlekurv", varer);
}
response.sendRedirect("leggtilhandlekurv.jsp");
/*
if(vare.equals("remove")) {
varer=(ArrayList<Vare>) session.getAttribute("handlekurv");
varer.remove(vare);
session.setAttribute("handlekurv", varer);
request.getRequestDispatcher("leggtilhandlekurv.jsp").forward(request, response);
}
*/
}
}
public class Vare {
private String vareNavn;
public String getVareNavn() {
return vareNavn;
}
public void setVareNavn(String vareNavn) {
this.vareNavn=vareNavn;
}
}
<%@page import="oppgave1.Vare"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Handleliste</title>
</head>
<body>
<%
if(session.getAttribute("pass")==null){
response.sendRedirect("login.jsp");
}
%>
<h1>Min handleliste</h1>
<form action="LeggTilHandlekurv" method="post">
Legg til vare: <br>
<input type="text" name="vare"> <br>
<input type="submit" value="Add item">
</form>
<table>
<th>Varer</th>
<%
ArrayList<Vare> varer = new ArrayList<Vare>();
if(request.getServletContext().getAttribute("handlekurv")!=null){
varer=(ArrayList<Vare>) request.getServletContext().getAttribute("handlekurv");
if(!varer.isEmpty()){
for(Vare vare: varer){
%>
<tr>
<td> <%=vare.getVareNavn() %></td>
<td> <input type="submit" name="remove" value="Remove item"> </td>
</tr>
<%
}
}
}
%>
</table>
</body>
</html>
您可以使用值为 vareNavn
的隐藏输入字段和将表单提交给 servlet 并获得响应的表单标签。因此,您的 jsp 代码将如下所示:
<td>
<form action="LeggTilHandlekurv" method="post">
<!-- hidden input-->
<input type="text" hidden name="item" value="<%=vare.getVareNavn() %>">
<!--added name attribute-->
<input type="submit" name="remove" value="Remove item">
</form>
</td>
然后,在您的 servlet doPost
方法中,您需要获取隐藏的输入值,即 item
,然后将该值与存储在 session
中的值进行比较,如果匹配我们只需要从会话中删除该值。因此,您的 doPost
方法代码将如下所示:
//check if request is for remove
if (request.getParameter("remove") != null) {
//get values
String item = request.getParameter("item");
//get data from session
ArrayList<Vare> varer1 = (ArrayList<Vare>) request.getServletContext().getAttribute("handlekurv");
Iterator<Vare> it = varer1.iterator();
//iterate through datas
while (it.hasNext()) {
Vare name = it.next();
//check if values matches
if (name.getVareNavn().equals(item)) {
it.remove(); //remove
}
}
//pass updated value to jsp page
session.setAttribute("handlekurv", varer1);
request.getRequestDispatcher("leggtilhandlekurv.jsp").forward(request, response);
}
此外,在此处 name 属性 <input type="submit" name="add" value="Add item">
并将用于添加新值的所有代码放入 if(request.getParameter("add") != null){ //put code here }