-1

我已经使用 mysql 数据库完成了 struts2 登录操作,如下所示。对于初始登录操作,我使用 LoginActionBean 来检查用户名和密码。登录到主页后,我需要再次从数据库中获取团队详细信息。为此,我使用了 jsp scriplet 标签。谁能告诉我另一种通过javabean(而不是通过LoginActionBean)而不使用jsp scriplets 从数据库访问团队详细信息的方法。

登录.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
</head>
<body>
    <s:form action="log">
    <s:textfield label="USERNAME" name="uname"/>
    <s:password label="PASSWORD" name="pass"/>
    <s:submit label="SUBMIT"/>
    </s:form>
</body>
</html>

主.jsp

<%@page import="java.sql.ResultSet"%>
<%@page import="DbCon.DataConnection"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!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 Page</title>
    </head>
    <body>
        <h1>Welcome to Employee Home!</h1>
        SELECT A TEAM:<select name="team">
            <%
             DataConnection db=new DataConnection();
             ResultSet rs=db.exeQuery("select * from team");
             while(rs.next())
                 {
            %>
            <option value="<%=rs.getString("teamname")%>" ><%=rs.getString("teamname")%></option>
            <%
            }
            %>
        </select>
    </body>
</html>

struts.xml

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.devMode" value="true" />
    <package name="default" extends="struts-default">
        <action name="log" class="login.Action.LoginActionBean" >
         <result name="success">/Main.jsp</result>
         <result name="error">/login.jsp</result>
        </action>
    </package>
</struts>

数据连接.java

package DbCon;
import java.io.FileInputStream;
import java.sql.*;
public class DataConnection
{
    Connection con;
    Statement stmt;
    PreparedStatement pstmt;
    ResultSet rs=null;
    public DataConnection()
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
            stmt=con.createStatement();
            con.setAutoCommit(false);
        }catch(Exception e){
            System.out.println("Err in constructor"+e);
        }
    }
    public ResultSet exeQuery(String query)
    {
        try
        {
           // con.commit();
            rs=stmt.executeQuery(query);
        }catch(Exception e){System.out.println(e);}
        return rs;
    }
    public int exeUpdate(String query)
    {
        int i = 0;
        try
        {
            //con.commit();
            i=stmt.executeUpdate(query);
            con.commit();
        }catch(Exception e){System.out.println(e);}
        return i;
    }
}

登录ActionBean.java

package login.Action;

import DbCon.DataConnection;
import com.opensymphony.xwork2.ActionSupport;
import java.sql.ResultSet;
import java.sql.SQLException;

public class LoginActionBean extends ActionSupport {
public String uname,pass;

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String execute() throws SQLException
    {
        DataConnection db=new DataConnection();
        ResultSet rs=db.exeQuery("select * from admin where name='"+uname+"' and  pass='"+pass+"'");
        if(rs.next())
         return SUCCESS;
        else
        return ERROR;
    }

}
4

1 回答 1

0

好吧,你已经完成了大部分工作,所以你可以做一些简单的事情,比如在你的动作课中

  1. 使用要在 JSP 中显示的属性创建一个 bean,比如 TeamDetails
  2. 在您的 Action 类中定义此 bean 并使用 DB 调用填充它
  3. 在您的 JSP 中使用 OGN 来访问数据并使用 struts2 标记显示它。

Action班级:

public class TeamDetailAction extends ActionSupport{
  List<TeamDetailData> teamDetails;
   //getter and setter

 public String execute() throws Exception{
             teamDetails=fill it by retrieving from BD
    }
}

TeamDetailData Java

public class TeamDetailData{

 private teamMemberName;
 // other properties
//getter and setters
}

在您的 JSP 上使用 OGNL迭代器标记来显示数据

JSP 页面

<s:iterator value="teamDetails">
  <p>Name : <s:property value="teamMemberName"/></p>
</s:iterator>
于 2012-08-30T06:59:25.413 回答