所以我尝试做的是让另一个JSP来获取刚刚登录的用户的信息(例如,只显示刚刚登录的特定用户的信息,而不是显示数据库中的所有内容,这与SELECT * username= user WHERE current user含义相同)。不管怎样,下面是我的代码,非常感谢!
<%
String userId = request.getParameter("user_id");
String pwd = request.getParameter("password");
%>
<jsp:useBean id="db" class="ecom.DBConnection" scope="session" />
<jsp:useBean id="user" class="ecom.UserInfo" scope="session" />
<%
Connection conn = db.getConnection();
PreparedStatement pstmt = conn.prepareStatement(
"select * from USERS where user_id=? and password=?");
pstmt.setString(1, userId);
pstmt.setString(2, pwd);
ResultSet rs = pstmt.executeQuery();
/* Comment
Set the user bean properties if login is successful */
if (rs.next()) {
user.setLoggedIn(true);
user.setUserId(rs.getString("user_id"));
} else {
user.setLoggedIn(false);
}
rs.close();
pstmt.close();
/* Comment
Forward the request to "home.jsp" if login is successful,
otherwise forward to "error.jsp". */
String forwardURL = null;
if (user.isLoggedIn()) {
forwardURL = "home.jsp";
} else {
forwardURL = "error.jsp";
}
%>
<jsp:forward page="<%= forwardURL %>" />这是我正在处理的页面(Setting.jsp)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="user" class="ecom.UserInfo" scope="session" />
<c:if test='${not user.loggedIn}'>
<jsp:forward page='error.jsp'/>
</c:if>
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css"></link>
<title>Jonathan's Auction Site</title>
</head>
<body marginwidth="0" marginheight="0" leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td bgcolor="#000000">Jonathan's Auction Site</td>
</tr>
<tr>
<td bgcolor="#cccccc" height="18" class="menu">
<font color="#ffffff">|</font> <B><a class="menu" href="home.jsp">Home</a></B>
<font color="#ffffff">|</font> <B><a class="menu" href="register.jsp">Register</a></B>
<font color="#ffffff">|</font> <B><a class="menu" href="Post.jsp">Post Items</a></B>
<font color="#ffffff">|</font> <B><a class="menu" href="browseItems.jsp">Browse Items</a></B>
<font color="#ffffff">|</font> <B><a class="menu" href="manageItems.jsp">Manage Items</a></B>
<font color="#ffffff">|</font> <B><a class="menu" href="setting.jsp">Account Settings</a></B>
<font color="#ffffff">|</font> <B><a class="menu" href="logout.jsp">Logout</a></B>
<font color="#ffffff">|</font>
</td>
</tr>
</table>
<%@ taglib prefix='sql' uri='http://java.sun.com/jsp/jstl/sql' %>
<sql:setDataSource
driver='com.mysql.jdbc.Driver'
url='jdbc:mysql://************'
user='USER'
password='Password'
var='030'
scope='session'
/>
<%
String userId = request.getParameter("user_id");
%>
<sql:query dataSource='${030}' var='USERS'>
SELECT * FROM USERS
</sql:query>
<table width="63%" border="0">
<tr>
<td width="16%" height="46"> </td>
<td width="73%" height="46">
<p> </p>
</td>
<td width="11%" height="46"> </td>
</tr>
<c:forEach var='USERS' items='${USERS.rows}'>
<tr>
<td width="16%"> </td>
<td width="73%">
<table width="352" border="1">
<tr>
<td>
<h3>${USERS.user_id}</h3>
</td>
</tr>
</table>
</form>
</td>
<td width="11%"> </td>
</tr>
<tr>
<td width="16%"> </td>
<td width="73%"> </td>
<td width="11%"> </td>
</tr>
</c:forEach>
<tr>
<td width="16%"> </td>
<td width="73%"> </td>
<td width="11%"> </td>
</tr>
<tr>
<td width="16%"> </td>
<td width="73%" align="center"> </td>
<td width="11%"> </td>
</tr>
</table>
<p> </p>
</body>
</html>(现在它会显示数据库中的所有用户名,但我只想要一个与登录的用户名相同的用户名)
发布于 2015-11-09 18:44:22
看起来你需要在这里修改Setting.jsp:
<sql:query dataSource='${030}' var='USERS'>
SELECT * FROM USERS
</sql:query>如果唯一的问题是它列出了您的所有用户,而不是会话中的用户,那么添加WHERE USER.ID = ? (或您的id列)并将其注册为一个参数,类似于您的工作JSP:
PreparedStatement pstmt = conn.prepareStatement(
"select * from USERS where user_id=?");
pstmt.setString(1, userId);https://stackoverflow.com/questions/33543934
复制相似问题