質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

12274閲覧

jspでservletのログインユーザー名を使用したいです。<%=Account.getUserId()%>で赤波線が出てしまいます。

edoooooo

総合スコア476

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2015/11/28 09:10

どうぞよろしくお願いします。

          • loginOK.jsp ここで、赤波線が出てします。

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="model.Account" %>
<%
//セッションスコープからユーザー情報を取得
String userId=(String)session.getAttribute("userId");
%>

<!DOCTYPE html > <html> <head> <meta charset="UTF-8"> <title>すっきり商店</title> </head> <body> <p>ようこそ<%=Account.getUserId() %>さん、無事ログインできました。</p> <a href="newsns/Main">呟き投稿・閲覧へ</a> </body> </html> - - - - - このまでがloginOK.jsp
          • Account.java

package model;

public class Account {
//フィールド
private String userId;
private String pass;
private String mail;

//Accountメソッド引数全て、
public Account(String userId,String pass,String mail){
this.userId=userId;
this.pass=pass;
this.mail=mail;
}
//UserId.Passとか
public String getUserId(){return userId;}
public String getPass(){return pass;}
public String getMail(){return mail;}
}

          • ここまでがAccount.java
          • login.Servlet.java

package servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import model.Login;
import model.LoginLogic;

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet{

private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ //フォワード RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/login.jsp"); dispatcher.forward(request,response); } //taichiのMain.javvaの分のログインしているかのチェックは、ここでおk protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ //リクエストパラメータの取得 request.setCharacterEncoding("UTF-8"); String userId=request.getParameter("userId"); String pass=request.getParameter("pass"); //ログイン処理の実行 Login login=new Login(userId,pass); LoginLogic bo=new LoginLogic(); boolean result=bo.execute(login); //ログイン処理の成否によって処理を分岐 if(result){//ログイン成功時 //sessionスコープにuserIdを保存 HttpSession session=request.getSession(); session.setAttribute("userId",userId); //フォワード RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/loginOK.jsp"); dispatcher.forward(request, response); }else{//ログイン失敗時 //フォワード RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/login.jsp"); dispatcher.forward(request, response); } }

}

        • ここまで
    どうぞよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

getUserメソッドは、staticでないので、クラス名+メソッド名のようにしてで呼び出すことはできません。

それよりも、

lang

1String userId=(String)session.getAttribute("userId");

でユーザーIDを取ってきているので、それを使えば良いのではないでしょうか。

投稿2015/11/28 09:43

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

edoooooo

2015/11/28 11:19

そうなのですね、過去に書いた本のコードを見ながら、  String userId=(String)session.getAttribute("userId");も自分で書いてみたのですが、 頭を柔らかく使うことができず、その発想に至りませんでした。  確かにuserIdを<%=userId%>のように使うだけですね、 こういう柔らかい発想ができると、優秀なプログラマーさんになれるのでしょうか? ありがとうございました。
argius

2015/11/28 11:48

頭を柔らかくするというのは、ユニークな発想を得るには大切ですが、 今回のケースはちょっと違うと思います。 これは特別なことをしているわけではないからです。 プログラミングでは大抵、こういうことをする場合はこういう風に書く、という一般的な形式があります。 必ずしもそうしなければならないわけではありませんが、奇抜なことしても読みにくくなるだけなので、たいていの人は一般的な形式で書くのです。 JSPでは、セッションスコープから値を取得する処理を冒頭に書いて、埋め込みタグではその値だけを書くようにするのが一般的です。 それに、ベテランさんであれば、この程度の規模であれば、書いてあることひとつひとつをすべて理解できますし、コードがどのように組み合わさって動くのかを理解しています。 無駄なことは書いても仕方ないので、使わない者は消しますし、使えるものは使います。 今表示しようとしているIDはどこから取ってこようとしているのか、と考え、冒頭で取ってきてあればそれを使うし、なければ改めてとってくる、それだけのことなのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問