-1

以下に示すように、mysqlデータベースを使用してstruts2ログインアクションを実行しました。最初のログインアクションには、ユーザー名とパスワードをチェックするLoginActionBeanを使用しています。メインページにログインした後、データベースからチームの詳細を再度取得する必要があります。そのために、私はjspscripletタグを使用しました。誰かが、データベースからjavabeans(LoginActionBeanではなく)を介して、jspスクリプトレットを使用せずにチームの詳細にアクセスする別の方法を教えてもらえますか。

login.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>

Main.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>

DataConnection.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;
    }
}

LoginActionBean.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で表示するプロパティを使用してTeamDetailsと言うBeanを作成します
  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
}

OGNLイテレータータグを使用してJSPでデータを表示する

JSPページ

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