2016-10-23 12 views
0

サーブレットを介してJSP上のcassandraデータベースからデータを表示しようとしているユニ・アサインメントの問題があります。基本的には、プロファイルページのユーザー情報を格納しているクラスでgetメソッドを使用しようとすると、nullポインタ例外が発生します。サーブレットからJSPに関する情報を表示する際の問題

以下のコードは、サーブレットに現在のユーザーの詳細を保持するオブジェクトを送信するよう要求するJSPの一部です。デバッガを見ると、ユーザー名は問題なく表示されるようですが、Profile Detailsの要求は空のオブジェクトを返しますが、データベースからの情報を入力する必要があります。

<% 
     String Username=null; 

     LoggedIn lg = (LoggedIn) session.getAttribute("LoggedIn"); 
     Username = lg.getUsername(); 

     ProfileDetails pd= new ProfileDetails(); 
     pd = (ProfileDetails) request.getAttribute("Profile"); 


     if (pd!=null) 
     { 
     String forename= pd.getForename(); 
     String surname=pd.getSurname(); 
     String email=pd.getEmail(); 


     %> 

この次のコードセグメントは、サーブレット内のメソッドであり、ユーザーの詳細が設定されたオブジェクトを返すメソッドです。

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    // processRequest(request, response); 
    HttpSession session=request.getSession(); 

    LoggedIn lg = (LoggedIn)session.getAttribute("LoggedIn"); 
    String username=lg.getUsername(); 

    User us = new User(); 
    us.setCluster(cluster); 
    ProfileDetails pd= new ProfileDetails(); 

    pd = us.GetUserDetails(pd, username); 
    request.setAttribute("Profile", pd); 

    RequestDispatcher rd = request.getRequestDispatcher("Profile.jsp"); 
    rd.forward(request, response); 

} 

私は私がいる問題は、コードのこれら2つのブロックのいずれかではなく、私は困惑分に基づいていることをかなり確信しています。だから、どんな助けも大いに評価されるだろう。誰もがここに助けることについては本当に熱心に感じている場合は

はGitHubのhttps://github.com/BrodieRoss/Instagrim.git上のクローニングのための私のプロジェクトへのリンク

P.S.です申し訳ありませんが、ここで説明していることのいずれかがナンセンスのように聞こえる場合、私はウェブ開発にはかなり新しいです。

答えて

1

ウェブアプリケーションのMVCバージョンを増やす必要があります。 私はあなたが何人かのゲッター(ボイド)を書いたのを見ましたが、あなたが書いた方がいいし、このクラスのメソッドをいくつか設定する方がいいです。

は、次に、あなたのJSPにサーブレットを転送していないが、は、それが使用してをリダイレクト:

HttpServletResponse.sendRedirect(String Location) 

または

HttpServletResponse.sendRedirect("/your/new/location.jsp") 

リダイレクトする前に、このオブジェクトにしたい属性を設定する必要があります。これらの属性にアクセスするには、クラスで使用しているのと同じ変数を使用します。それらをjspファイルに表示するには、jstl libを使用する必要があります。もっとここをチェック: https://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm

このチュートリアルでは、あなたを助けるかもしれない:あなたが書き込みJavaコードといくつかの余分な助けが必要な場合は https://docs.oracle.com/cd/E15919_01/wlp.1032/e14254/developuserprofiles.htm

+0

を教えてください。 – Filippos

0

User us = new User();私は、サーバーインスタンスの一部である情報の "クラスタ"と関連していると思いますが、 "cluster"自体の関連するフォームの変数宣言や代入呼び出しは見えませんが、 /とあまりにも(et tu) "データベース"(あなたが言う/書いた通り)は、 "インスタンス情報とSERVER環境変数、グローバルなどを実行するサーバー構成"のJava J2EEサーバーには、Javaドライバーと接続プールが関連付けられている別のサーバープログラム(例:MySQL Potgre ...)への「接続」セットがありません。

しかし、何かが "静的な"変数であり、メソッドや変数に供給されるために静的でないコンテキストにキャストする必要があります。 あなたはそれを今見直すことができますか?

情報は、いくつかの状態(ちょっと考えたこと)を持つJSP Beanを使ったほうが良いでしょう。 "Cassandra"(ドライバインタフェースインスタンスとスレッド同様、MySQLクエリとドライバシステムの接続)のJava統合とJava互換ドライバ http://cassandra.apache.org/doc/latest/getting_started/drivers.html?highlight=drivers

関連する問題