Java MVC-通过JSP发送带有请求/会话的字段值
我正在尝试创建一个Party类型的成员列表,并将他们的memberID链接到一个更新页面,该页面将自动获取被单击的成员的memberID 我已经在servlet中编写了代码来显示所有成员的视图,每个成员的ID都链接到一个名为UpdateParty.jsp的页面,但是我希望单击的ID与请求一起传递,以便它可以在UpdateParty.jsp中用作参数,这样用户就不必输入它 如果有人想知道,我正在使用postgres作为我的SQL 生成所有参与方成员列表的Servlet代码:Java MVC-通过JSP发送带有请求/会话的字段值,java,model-view-controller,Java,Model View Controller,我正在尝试创建一个Party类型的成员列表,并将他们的memberID链接到一个更新页面,该页面将自动获取被单击的成员的memberID 我已经在servlet中编写了代码来显示所有成员的视图,每个成员的ID都链接到一个名为UpdateParty.jsp的页面,但是我希望单击的ID与请求一起传递,以便它可以在UpdateParty.jsp中用作参数,这样用户就不必输入它 如果有人想知道,我正在使用postgres作为我的SQL 生成所有参与方成员列表的Servlet代码: else if (
else if (request.getParameter("listallmembers") != null) {
try {
User sessionuser = (User) session.getAttribute("User");
String u = sessionuser.getUsername();
ArrayList<Party> p = new ArrayList<Party>();
ResultSet rs = this.findAllMembers(u);
while (rs.next()) {
Party party = new Party();
party.setMemberID(rs.getString("memberID"));
party.setPartyFirstname(rs.getString("partyFirstname"));
party.setPartySurname(rs.getString("partySurname"));
party.setUsername(rs.getString("username"));
p.add(party);
}
request.setAttribute("members", p);
request.getRequestDispatcher("ViewPartyMembers.jsp").forward(request, response);
} catch (Exception e) {
out.print(e);
e.printStackTrace(out);
}
<%@page import="HolidayExchange.Party"%>
<%@page import="HolidayExchange.User"%>
<%@page import="java.util.List"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>All Party Members</title>
</head>
<body>
<h1>View Party Members</h1>
<%
List<Party> l = (List<Party>) request.getAttribute("members");
if(l!=null){
out.println("<table>");
out.println("<tr><th>Member ID</th><th>Firstname</th><th>Second Name</th><th>Associated User</th></tr>");
for(int i = 0; i < l.size();i++){
out.println("<tr><td>"+ l.get(i).getMemberID() +
"</td><td><a href='UpdateParty.jsp'>"+ l.get(i).getPartyFirstname() +
"</a></td><td>"+ l.get(i).getPartySurname() +
"</td><td>" + l.get(i).getUsername() + "</td>");
out.println("</tr>");
}
out.println("</table>");
}else{
%>
<form action="PartyServlet" method="get">
<input type="hidden" name="listallmembers" value="1" /><br />
<input type="submit" value="Show all Members" />
</form>
<%
}
%>
</body>
</html>
else if(request.getParameter(“listallmembers”)!=null){
试一试{
用户sessionuser=(用户)session.getAttribute(“用户”);
字符串u=sessionuser.getUsername();
ArrayList p=新的ArrayList();
结果集rs=this.findAllMembers(u);
while(rs.next()){
政党=新党();
party.setMemberID(rs.getString(“memberID”);
party.setPartyFirstname(rs.getString(“partyFirstname”);
party.setPartySurname(rs.getString(“partySurname”);
party.setUsername(rs.getString(“用户名”);
p、 添加(一方);
}
setAttribute(“成员”,p);
getRequestDispatcher(“ViewPartyMembers.jsp”).forward(请求,响应);
}捕获(例外e){
打印(e);
e、 打印跟踪(输出);
}
ViewPartyMembers.jsp的代码:
else if (request.getParameter("listallmembers") != null) {
try {
User sessionuser = (User) session.getAttribute("User");
String u = sessionuser.getUsername();
ArrayList<Party> p = new ArrayList<Party>();
ResultSet rs = this.findAllMembers(u);
while (rs.next()) {
Party party = new Party();
party.setMemberID(rs.getString("memberID"));
party.setPartyFirstname(rs.getString("partyFirstname"));
party.setPartySurname(rs.getString("partySurname"));
party.setUsername(rs.getString("username"));
p.add(party);
}
request.setAttribute("members", p);
request.getRequestDispatcher("ViewPartyMembers.jsp").forward(request, response);
} catch (Exception e) {
out.print(e);
e.printStackTrace(out);
}
<%@page import="HolidayExchange.Party"%>
<%@page import="HolidayExchange.User"%>
<%@page import="java.util.List"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>All Party Members</title>
</head>
<body>
<h1>View Party Members</h1>
<%
List<Party> l = (List<Party>) request.getAttribute("members");
if(l!=null){
out.println("<table>");
out.println("<tr><th>Member ID</th><th>Firstname</th><th>Second Name</th><th>Associated User</th></tr>");
for(int i = 0; i < l.size();i++){
out.println("<tr><td>"+ l.get(i).getMemberID() +
"</td><td><a href='UpdateParty.jsp'>"+ l.get(i).getPartyFirstname() +
"</a></td><td>"+ l.get(i).getPartySurname() +
"</td><td>" + l.get(i).getUsername() + "</td>");
out.println("</tr>");
}
out.println("</table>");
}else{
%>
<form action="PartyServlet" method="get">
<input type="hidden" name="listallmembers" value="1" /><br />
<input type="submit" value="Show all Members" />
</form>
<%
}
%>
</body>
</html>
全体党员
看党员
如果您希望UpdateParty.jsp上的ID可用,您的链接应该如下所示:
<a href='UpdateParty.jsp?id=" + l.get(i).getMemberID() + "'>"+ l.get(i).getPartyFirstname()"</a>
因此id属性将在JSP中作为请求参数提供
无论如何,我建议您不要在JSP中使用scriptlet,而是直接指向指向控制器/操作的JSP。这里有一些更合理的建议。它使用JSTL表达式语言和标记库
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>All Party Members</title>
</head>
<body>
<h1>View Party Members</h1>
<c:if test="${!empty members}">
<table>
<tr><th>Member ID</th><th>Firstname</th><th>Second Name</th><th>Associated User</th></tr>
<c:forEach items="${members}" var="member">
<tr><td>${member.memberID}</td>
<c:url value="link" value="UpdateParty.jsp">
<c:param name="memberId" value="${member.memberID}"/>
</c:url>
<td><a href="${link}">${member.partyFirstname}</a></td>
<td>${member.partySurname}</td>
<td>${member.username}</td>
</tr>
</c:forEach>
</table>
</c:if>
<c:if test="${empty members}">
<form action="PartyServlet" method="get">
<input type="hidden" name="listallmembers" value="1" /><br />
<input type="submit" value="Show all Members" />
</form>
</c:if>
</body>
</html>
全体党员
看党员
成员IDFirstnameSecond名称关联用户
${member.memberID}
${member.partySurname}
${member.username}
理想情况下,我希望通过控制器完成这一切,但是我不确定如何在不直接处理超链接字段的情况下将链接文本的值传递到更新servlet。使用链接将id传递给JSP/Contoller不是一个坏方法。