java - JSP中实现推特的问题:IF语句不能正常工作
问题描述
作为我大学学习的一部分,我必须使用 JSP 创建一个简单的 Twitter 程序。
结构如下:
输入用户名并通过 login.jsp 登录。转到 list.jsp。
在 list.jsp 中,您可以创建推文和删除您编写的推文。
推文创建在 tweet.jsp 中完成,它不显示单独的屏幕。
下面是完整的代码。
twitter_login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.ArrayList"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>twitter Login</title>
</head>
<body>
<center>
<h2>twitter Login</h2>
<form name=form1 method=post action=twitter_list.jsp>
<input type="text" name="username"/>
<input type="submit" value="login"/>
</form>
</center>
</body>
</html>
twitter_list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
if(username != null) {
session.setAttribute("user",username);
}
%>
<html>
<head>
<script>
function func() {
}
</script>
<title>Twitter</title>
</head>
<body>
<div align=center>
<h3>My Simple Twitter!</h3>
<hr>
<form action="tweet.jsp" method="POST">
@<%=session.getAttribute("user") %> <input type="text" name="msg">
<input type="submit" value="Tweet">
</form>
<hr>
<div align="left">
<OL type="1">
<%
ArrayList<String>msgs = (ArrayList<String>)application.getAttribute("msgs");
ArrayList<String>id = (ArrayList<String>)application.getAttribute("id");
Object un = session.getAttribute("user");
String string_un = String.valueOf(un);
if(msgs != null)
{
for(int i=0; i<msgs.size(); i++) {
out.println("<LI>"+ msgs.get(i));
if(id.get(i) == string_un) {
out.println("<input type='button' value='delete' onclick='func()'/>" +"<LI>");
}
}
}
%>
</OL >
</div>
</div>
</body>
</html>
推文.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
request.setCharacterEncoding("UTF-8");
String msg = request.getParameter("msg");
Object username = session.getAttribute("user");
String idstring = String.valueOf(username);
ArrayList<String>msgs = (ArrayList<String>)application.getAttribute("msgs");
ArrayList<String>id = (ArrayList<String>)application.getAttribute("id");
if (msgs == null) {
msgs = new ArrayList<String>();
application.setAttribute("msgs", msgs);
}
if (id == null) {
id = new ArrayList<String>();
application.setAttribute("id", id);
}
msgs.add(username+" :: " +msg+" , "+ new java.util.Date());
id.add(String.valueOf(username));
application.log(msg+"added");
response.sendRedirect("twitter_list.jsp");
%>
那么,问题是什么?
我一起创建了数组列表msg和id,在输出tweet时list.jsp
,如果当前连接的username和数组列表id值相同,则delete
在tweet旁边显示按钮。
但由于它实际工作的结果,我没有看到我之前使用相同用户名写的推文旁边的删除按钮。请参考截图。 在此处输入图像描述
如果我解决了这个问题并继续下一步,那么我认为我应该msgs.remove(i)
在单击删除按钮时删除该按钮旁边的推文。
但是如何单击该按钮并激活msgs.remove(i)
?
onclick
和 javascript 函数只是临时的东西。我尝试使用另一个 jsp ( delete.jsp
) 使用表单操作来处理它。但是,很难传递 i 的值。有没有办法匹配i-value
每个按钮?
或者请建议另一条正确的路径。
我已经为这个问题徘徊了两天。
解决方案
推荐阅读
- java - LibGDX Array's internal array is not type safe
- amazon-web-services - 如何在不同的 cloudformation 堆栈中分离 dynamodb 表及其 GSI?
- python - 我怎样才能让 xticks 在我的 matplotlib 图上有一个每月间隔而不是每天
- python - 使用 Python boto3 从 S3 下载 Sentinel 文件
- r - 需要 R 代码绘图错误与否的帮助。马尔可夫链中的样本
- java - 使用 GSON 或 Jackson 到 POJO 的 HashMap
- python - 熊猫根据条件将多行组合成一行
- vba - 避免 Corel 绘图中的重叠曲线
- javascript - 如何在react中的useEffect挂钩中停止来自导入函数的新实例的先前调用
- typescript - 如何在 nuxt.js 中安装 trading-vue-js 插件?