0

以下のJSPを書きました。今度はMVCパターンにしたいのですが、その方法を教えてください。

<%@page import="java.util.Date"%>  
<%@include file="DBCon.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=ISO-8859-1">  
<title>Insert title here</title>  
<script language="javascript">  
    function UnBloc1(test){  
        var temp3id= 'temp3' + test;  
        var temp4id= 'temp4' + test;  
      //alert(temp3id);  

      document.getElementById(temp3id).style.display='block';  
      document.getElementById(temp4id).style.display='block';  
    }  

    function invoke(but1)  
    {  
        //var x=document.getElementById("temp3"+but).value;  
        //alert(x);  
         document.abc.action="Up_Query_DB.jsp?val1="+but1;  
         document.abc.submit();  
    }  
    function invoke1(but)  
            {      
         document.abc.action="Users_2.jsp?val="+but;  
         document.abc.submit();  

         //var t=document.getElementById("ab")+z;  
         //alert(t);  
            }  
</script>  
</head>  
<body>  
<form name="abc" method="post" action=""><table>  
<%  
try  
               {  
    String s=(String)session.getAttribute("muusername");  
    int i=0;  
    int temp=0, temp1=0,temp2=0, temp3=0, temp4=0;  
    ps=con.prepareStatement("Select DBID,Query_Raised,TR from Scope2 where TR!='null' AND (Query_Answered is null OR Count1 is null) And Specialist='"+s+"'");  
    rs=ps.executeQuery();  
    out.println("<b>QueryRaised</b>");  
       while(rs.next())  

        {  

           i++;  
           %>  

                      <tr>  
                      <td><input type="text" value="<%=i%>" name="id1" id="id1"></td>  
                      <td><center><input type="text" value="<%=rs.getString("DBID")%>" readonly id="abc<%=i%>" name="abc<%=i%>" size="100"></center></td>  
                      <td><input type="Submit" value="Resume" name="temp1<%=i%>" id="temp1<%=i%>" onclick="invoke1(<%=i%>)"></td>  
                      <td><input type="button" value="Update Answer"  name="temp2<%=i%>" id="temp2<%=i%>" onClick="UnBloc1(<%=i%>)"></td>  
                      <td><input type="text" name="temp3<%=i%>" id="temp3<%=i%>" style="display: none"/></td>   
                      <td><input type="Submit" value="Submit Answer" name="temp4<%=i%>" id="temp4<%=i%>" style="display: none" onClick="invoke(<%=i%>)"/>                      </td>  
                      </tr>  



    <% }  

}  
catch(Exception e)  
           {  

out.println(e);  

}  
%>    
  </table>    
 </form>   


</body>  
</html>
4

2 に答える 2

3

データベースにアクセスして、属性を含む(setterメソッドとgetterメソッドを含む)オブジェクトのリストを取得するとしdbidます。オブジェクトはモデルになります。それを呼びましょうmyBean

クエリを実行するJavaクラスはControllerクラスになります。それを呼びましょうmyController。したがって、コントローラは次のことを行う必要があります。1.必要なオブジェクトのリストを取得します。2.情報を表す前に行う必要のあることをすべて実行します(あなたの場合は何も言いません)。3。情報を表示できるように、リクエストに情報を設定するBeanのリストを介してJSPに情報を渡します。

これで、JSPは次のよ​​うになります。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ 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=ISO-8859-1">  
    <title>Insert title here</title>

    <script language="javascript">

       ...

    </script>  
</head>  

<body>

<form name="abc" method="post" action="">

    <table>

        <c:forEach var="myItem" items="${listDbid}" varStatus="i">

            <tr>  
                <td><input type="text" value="${i.count}" name="id1" id="id1"></td>  
                <td><center><input type="text" value="${myItem.getDbid}" readonly id="abc${i.count}" name="abc${i.count}" size="100"></center></td>  
                <td><input type="Submit" value="Resume" name="temp1${i.count}" id="temp1${i.count}" onclick="invoke1(${i.count})"></td>  
                <td><input type="button" value="Update Answer"  name="temp2${i.count}" id="temp2${i.count}" onClick="UnBloc1(${i.count})"></td>  
                <td><input type="text" name="temp3${i.count}" id="temp3${i.count}" style="display: none"/></td>   
                <td><input type="Submit" value="Submit Answer" name="temp4${i.count}" id="temp4${i.count}" style="display: none" onClick="invoke(${i.count})"/>                      </td>  
            </tr>    

        </c:forEach>        

  </table>    
 </form>      

</body>  
</html>

したがって、基本的には、JSPから「ビュー」ではないすべてのコードを削除し、それを「コントローラー」に移動し、「モデル」を使用して「コントローラー」から「ビュー」に情報を送信する必要があります。

また

  • JSPではスクリプト(<%%>)を避け、JSTLや他の同様のツールを使用することをお勧めします。これを行う場合、おそらくJSPには「コントローラー」コードがありません。
  • SpringMVCやStrutsなどのMVCフレームワークを使用することをお勧めします。
  • また、データベースにアクセスするためだけにコードに別のレイヤーを作成すると便利です。このデータベースレイヤーは、コントローラーによって使用されるため、コントローラーによって使用されます。コードを再利用し、コントローラーをデータベースから独立させ、より明確に保つことができます。
于 2012-11-14T07:16:14.880 に答える
1

私もMVCが初めてですが、いくつかのヒントを提案できます。豆を作る。Beans は getter と setter を持つ Java クラスです。あなたの場合、豆は

 public class Scope2
 {
   String dbID;
  //all other attributes of the table.Beans should be reusable so usually there is only one bean for one corresponding table

   public String getDBID()
  {
    return dbID;
   }
   public void setDBID(String dbId)
   {
     this.dbId=dbId;
   }

  //Other getters and setters for all other attributes
}

次に、データベース クエリを実行するクラスを作成します。そして、Bean Scope2 をそのクラスから jsp に返します。そして、jsp では、値を単に out.println(bean.getDBID()); として出力します。

于 2012-11-14T07:03:08.097 に答える