LoginSignup
1
2

More than 3 years have passed since last update.

基礎Webアプリケーション作成 Servlet/JSP(投稿画面)

Posted at

はじめに

今回は前回、基礎Webアプリケーション作成 Servlet/JSP(ログイン機能)の続きを行います。
この記事で目指すのは投稿画面でのログインしているかしていないかの確認やしていない場合の処理をすることを目指します。

実行環境

  • Eclipse4.16
  • Tomcat9
  • Java11

1.投稿のModel作成

投稿画面を表示するので投稿情報のモデルを作成します。
投稿にはユーザー名と文章が存在することとする。

Article.java
public class Article implements Serializable{

    private String userName;
    private String text;

    Article(){}

    Article(String userName,String text){
        this.userName = userName;
        this.text = text;
    }

    public String getUserName() {
        return this.userName;
    }

    public String getText() {
        return this.text;
    }
}

2.記事に関するリクエスト処理のコントローラ

このコントローラでログインしているかの確認の処理を行い

  • ログインしている場合→bulletin-board.jspをフォワード
  • ログインしていない場合→ログイン画面へリダイレクト
BulletinBoard.java
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        ServletContext application = this.getServletContext();
        List<Article> articleList = (List<Article>) application.getAttribute("articleList");  // 1
        if(articleList == null) {
            articleList = new ArrayList<Article>();
            application.setAttribute("articleList",articleList);  // 2
        }

        HttpSession session = request.getSession();
        User loginUser = (User) session.getAttribute("loginUser");  // 3

        if(loginUser == null) {
            response.sendRedirect("./login");  // 4
        }else {
            request.getRequestDispatcher("/WEB-INF/view/bulletin-board.jsp").forward(request, response);  // 5
        }
    }
  1. アプリケーションスコープから取得
  2. 1がnullの場合、空の記事リストをアプリケーションスコープにセット
  3. セッションスコープから取得
  4. ログインしていない場合ログイン画面にリダイレクト
  5. ログインしている場合掲示板画面を表示

3.掲示板画面のビュー作成

bulletin-board.jsp
<h2>こちらは掲示板画面です。</h2>
<p><c:out value="${loginUser.name}"/>さんがログイン中です。</p>

2行目で誰がログインしているか出力します。

4.実行

動作確認してログインしていれば掲示板画面が表示されて
ログインしていなければログインページにリダイレクトされれば成功!
一度セッションスコープを削除したい場合は以下を記載する

request.getSession().removeAttribute("loginUser");

最後に

次回はログアウト機能実装を行います。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2