在 struts 1.3 中如何从数据库中检索数据并使用 DAO 显示它
Posted
技术标签:
【中文标题】在 struts 1.3 中如何从数据库中检索数据并使用 DAO 显示它【英文标题】:In struts 1.3 how to retrieve data from database and display it using DAO 【发布时间】:2013-01-20 21:42:09 【问题描述】:*M 刚接触 struts。我正在制作简单的登录页面,通过从数据库中检索来显示用户名和密码。我正在使用 DAO。 我有 LoginDAO.java、LoginAction.java 和 Displaydata.jsp 页面。 *
LoginDAO.java
public boolean login(String user,String pass) throws SQLException
Connection con = getConnection();
Statement st;
try
st = con.createStatement();
st.executeQuery("select * from login where Username='" + user + "' and Password='" + pass + "'");
return true;
catch (SQLException e1)
// TODO Auto-generated catch block
e1.printStackTrace();
return false;
LoginAction.java
public class LoginAction extends Action
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
DynaValidatorForm rf= (DynaValidatorForm) form;
String username = rf.get("username").toString();
String password = rf.get("password").toString();
HttpSession session=request.getSession();
session.setAttribute("user", username);
Login dao= new Login();
if(dao.login(username,password))
System.out.println("GOT");
return mapping.findForward("success");
else
System.out.println("NOT");
return mapping.findForward("failure");
还有我在 Dislpaydata.jsp 中写什么来显示用户名和密码,不需要任何 java 代码。 谢谢你
【问题讨论】:
格式化代码将是避免阅读本文时可能出现的错误的巨大优势。 【参考方案1】:没错。前段时间我用 Struts 1.x 和 mysql 构建了一个应用程序。
登录操作
public ActionForward login( ... ) throws Exception
String forward;
final String mail = PropertyUtils.getProperty(form, "mail");
final String password = PropertyUtils.getProperty(form, "password");
if (LoginService.getInstance().validate(mail, password))
// Do something e.g. put name of user in session
forward = SUCCESS;
else
forward = ERROR;
return mapping.findForward(forward);
登录服务
public boolean validate(final String mail, final String password)
throws ServiceException
try
final boolean valid;
// Validate null and empty
// Validate with DB
final UserDAO dao = new UserDAO();
final User user = dao.findByPk(mail);
if (user == null)
valid = false;
else
if (password.equals(user.getPassword()))
valid = true;
else
valid = false;
return valid;
catch (DAOException e)
throw new ServiceException("Error validating user and password.", e);
用户DAO
private static final String FIND_BY_PK_SQL
= "SELECT mail, name, password, admin FROM user WHERE mail = ?";
public User findByPk(final String mail) throws DAOException
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try
conn = getConnection();
ps = conn.prepareStatement(FIND_BY_PK_SQL);
ps.setString(1, mail); // PK, NOT NULL
rs = ps.executeQuery();
if (rs.next())
return fill(rs);
return null;
catch (final SQLException e)
throw new DAOException(e);
finally
// Close DB resources
private User fill(final ResultSet rs) throws SQLException
final User user = new User();
user.setMail(rs.getString("mail"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
user.setAdmin(rs.getBoolean("admin"));
return user;
在我的例子中,我有一个表 user
,其中 mail
作为主键。有多种形式。
更多示例:
Building a Login Application Struts Login Application Using Action Form Tutorial | DZone Creating a Email Login Web Application with Struts例如从数据库中显示会话范围内变量用户的名称:
登录操作
if (LoginService.getInstance().validate(mail, password))
final HttpSession session = request.getSession();
final User user = UserService.getInstance().getUser(mail);
session.setAttribute("user", user);
forward = SUCCESS;
home.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
Welcome,
<bean:write scope="session" name="user" property="name" filter="false" />
【讨论】:
你能告诉我登录后如何使用会话显示数据吗? M 无法理解如何使用 req.getAttribute("")。 您可以使用tag libraries 来避免在您的jsp 中使用Java。我的应用使用了struts标签库,以后可能会切换到JSTL。 Thanxs @paulvargas 但我已经这样做了,我在登录时创建了会话,它在登录页面后显示。但是现在我将如何使用会话在 jsp 中显示他的所有信息。无法在另一个名为 RetrieveInfo.java 的类中使用已创建的会话来使用另一个名为 DisplayAction 的动作类来显示此数据. 我不确定你想做什么。这取决于struts-config.xml
中定义的应用程序的流程。检索用户数据,将它们放在某个范围内(request
或 session
),并将其显示在适当的 JSP 中。
嘿,谢谢你的帮助,我终于可以找回我的信息了 :)【参考方案2】:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Login Page</title>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript"
src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.min.js"></script>
</head>
<body bgcolor="#2EFEF7">
<form action="action" method="post" id="formDemo" name="MyForm">
<div id="header">
<h2 style="color: red;">Training</h2>
</div>
<hr>
<h3>Login</h3>
<div id="center" style="padding-top: 50px; padding-bottom: 220px;">
<table align="center">
<tr>
<th colspan="2"><h1 style="color: BLUE;">LOGIN</h1></th>
</tr>
<tr>
<th colspan="2"><h5 id="error" style="color: red;"></h5></th>
</tr>
<tr>
<td>UserID:</td>
<td><input type="text" size="40" name="UserId" maxlength="8"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="text" size="40" name="Password" maxlength="8"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit"
value="Login"> <input type="button" id="reset"
value="Clear"></td>
</tr>
</table>
</div>
<hr>
<div id="footer">
<label>Copy right@ 2000-2008 FUJINET, All Rights Reserved.</label>
</div>
</form>
<script type="text/javascript">
<!--
// Form validation code will come here.
function validate()
if (document.MyForm.UserId.value === ""
|| document.MyForm.UserId.value === null)
document.getElementById("error").innerHTML = "Please insert userId";
return false;
if (document.MyForm.Password.value === ""
|| document.MyForm.Password.value === null)
document.getElementById("error").innerHTML = "Please insert password";
return false;
return (true);
$("#reset").click(function(event)
document.MyForm.UserId.value = "";
document.MyForm.Password.value = "";
document.getElementById("error").innerHTML = "";
);
$("#formDemo").submit(function(event)
return validate();
);
</script>
</body>
</html>
【讨论】:
欢迎来到 ***!请不要只是发布代码作为答案,请解释您的代码的作用以及它如何回答问题。以上是关于在 struts 1.3 中如何从数据库中检索数据并使用 DAO 显示它的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Struts 2 中将数据库记录列表(通过 Hibernate 检索)显示到 JSP 页面?
通过 JSON 将数据从 handsontable 检索到 Struts2 Action 不起作用