我的jsp页面有两个部分,左边和右边。用户登录后,他们的名字将被显示,如果他们点击左边或右边,也将被显示。
在左侧,如果没有用户交互,数据应显示在表格中,在右侧,通过从下拉列表中选择名称并单击按钮,数据将显示在表格中。我想存储他们关闭浏览器后的点击次数。
你能提供一些指导吗,我应该把每个变量传递给一个新的servlet并更新MySQL表吗?另一个问题是,当用户点击按钮(因为它将被发布到servlet类)时,他们的名字和左边部分的计数将被删除。我想我应该改变编程的风格,但是我不知道该怎么做。
这就是我所做的:
指数jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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>JSP Example</title>
</head>
<body>
<form method="post" action="second.jsp">
<center>
<table border="1" width="30%" cellpadding="3">
<tbody>
<tr>
<td>User id</td>
<td><input type="text" name="uname" value="" /></td>
</tr>
</tbody>
</table>
<input type="submit" value="login" />
</center>
</form>
</body>
第二jsp:
<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%@ page import="java.util.ArrayList" %>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Title</title>
</head>
<body>
<%
String user = request.getParameter("uname");
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db",
"root", "pass");
Statement st = con.createStatement();
ResultSet rs;
rs = st.executeQuery("select * from users where uemail='" + user + "' ");
if (rs.next()) {
session.setAttribute("uname", user);
out.println("welcome " + user);
} else {
int i = st.executeUpdate("insert into users (uemail) values ('" + user + "')");
if (i > 0) {
session.setAttribute("uname", user);
out.println("welcome " + user);
}
}
%>
<div style="width:100%;" >
<div style="float:left; width:60%;" >
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/db"
user="root" password="pass"/>
<sql:query dataSource="${snapshot}" var="resultt">
SELECT a,b,c,d from table;
</sql:query>
<table width="70%" onclick='lcounters()'>
<c:forEach var="row" items="${resultt.rows}">
<tr>
<td><a href="${row.a}" target="blank"><font size="5">${row.d}</font> </a></td>
</tr>
<tr>
<td ><font color="green" size="4"><c:out value=" ${row.b}"/></font></td>
</tr>
<tr>
<td ><c:out value=" ${row.c}"/></td>
</tr>
<tr>
<td>
</td>
</tr>
</c:forEach>
<script> var lclicks = 0;
function lcounters() {
clicks += 1;
document.getElementById("lclicks").innerHTML = lclicks;
};</script>
<p>Clicks: <a id="lclicks">0</a></p>
</table>
</div>
<div style="float:right; width:40%; ">
<form action="ActionServlet" method="post">
<table >
<tr> <td> Names:</td>
<td>
<select name="names">
<option value=""> </option>
<option value="aaa">aaa</option>
<option value="bbb">bbb</option>
</select>
</td>
<td> <input type="submit" name="jdbc_query" value="Show" /> </td>
</tr>
<script> var rclicks = 0;
function rcounters() {
rclicks += 1;
document.getElementById("rclicks").innerHTML = rclicks ;
};</script>
<p>Clicks: <a id="rclicks">0</a></p>
</table>
<c:if test="${result != null}">
<table border="1" width="100%" onclick='rcounter()'>
<tr>
<th>first</th>
<th>second</th>
<th>third</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<tr>
<td><c:out value="${row.u}"/></td>
<td><c:out value="${row.v}"/></td>
<td> <a href="${row.w}"> <font color="green"> ${row.x} </font> </a><br>${row.y} </td>
</tr>
</c:forEach>
</table>
</c:if>
</div>
</form>
</div>
</body>
</html>
servlet类:
import java.io.IOException;
import java.io.PrintWriter;
import javax.naming.NamingException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;
@SuppressWarnings("serial")
public class ActionServlet extends HttpServlet {
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// HttpSession session = request.getSession();
String out = "\n";
String cname = request.getParameter("names");
MysqlDataSource ds = null;
Connection connect = null;
Statement statement = null;
try {
ds = new MysqlDataSource();
ds.setUrl("jdbc:mysql://localhost:3306/db");
ds.setUser("root");
ds.setPassword("pass");
connect = ds.getConnection();
statement = connect.createStatement();
String query = "SELECT u,v,x,w,y FROM table2 where name= ? " ;
PreparedStatement ps1 = connect.prepareStatement(query);
ps1.setString(1, cname);
ResultSet resultSet = ps1.executeQuery();
Result result = ResultSupport.toResult(resultSet);
request.setAttribute("result", result);
RequestDispatcher rd = request.getRequestDispatcher("second.jsp");
rd.forward(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
finally {
try { statement.close(); } catch (SQLException e) { e.getErrorCode(); }
try { connect.close(); } catch (SQLException e) { e.getErrorCode(); }
}
}}
非常不稳定的环境!
想知道为什么你需要计算点击次数,但如果这是一项业务,那么你需要考虑桌面应用程序,有了web,你就不能让它100%稳定和工作。
但是如果您坚持要解决这个问题,我建议您使用WebSocket,并每隔x秒将单击传递给服务器。
另外,请尝试使用连接池和准备好的语句,您的db连接状态目前是最差的。
需要根据特定环境从两个远程存储库部署工件。所以我尝试在pom.xml的分发管理中使用配置文件 尝试激活个人资料 我得到以下错误。 部署失败:存储库元素没有指定在POM内部分布管理元素或在-DaltDeploymentRepository=id::布局::url参数 似乎pom无法识别分发管理标签。 但它在没有单一分销管理的配置文件的情况下运行良好。 有谁能给点建议吗? 参考 设置Maven以允许轻
问题内容: 我有一个mysql数据库表,该表需要与ElasticSearch索引保持一致。我已经将表从表导出到es索引,但是现在我需要保持数据同步,否则搜索将很快变得过时。 我能想到的唯一方法是每隔X分钟导出一次表,然后将其与上次导入的表进行比较。这是不可行的,因为该表大约有1000万行,而且我不想整天每五分钟进行一次表导出。有什么好的解决方案?请注意,我仅具有对数据库的读取权限。 问题答案: 我
Evere:路径为[/EmployeeRegistrationForm]的上下文中servlet[dispatcher]的servlet.Service()引发异常[请求处理失败;嵌套异常为org.springframework.web.bind.annotation.support.handlerMethodInvocationException:未能调用处理程序方法[public java.u
我正在创建一个web应用程序,允许学生通过HTML表单注册(完成了这部分内容),并将他们的数据存储在数据库中(完成了)。我正在使用PHP/MySQL来编写这个。 我的想法是,我有一个‘后端’将允许管理员搜索一个学生的名字,最后,或全名(这是完成),并显示一个学生名单在下一页。(另已完成)。学生列表将是单独的超链接。 我的页面布局是: BackendHome.php 具有搜索栏和搜索按钮 searc
我从PHP的API接收lan和lot数据,并用和从响应中提取它们。我如何将它们添加到我的MySQL列作为点值?
我的MySQL数据库中有四个表。 订单 项目 Orders_Items 客户 订单表 订单ID客户ID 项目表 item_id item_name item_price item_quantity orders_items表 order_item_id order_id item_id 客户表 customer_id customer_name 我想显示一个表,该表列出订单表中的所有订单,并将所有