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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

16281閲覧

javascriptからJavaメソッドを実行する方法

Y.Mamoru

総合スコア47

Java

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/11/11 05:30

〇やりたいこと
勤怠アプリを作っています。
そのなかで、画面上のリンクをクリックすると社員情報の一覧がテーブルで表示される機能をjavascriptを使ってつくりたいと考えています。

現状はJavaを使い、画面遷移をすることによって上記の機能を実装しています。
(リンクをクリック→ActionクラスでDBから社員情報をSELECT→SELECTしたデータをListに格納→遷移先のjsp画面でListの値をテーブルに表示。という流れです)

この流れを、
(リンクをクリック→onClickなどでイベント実行→DB接続に関わるJavaクラスを実行→データをListに格納→データをテーブルで表示(※このテーブルをリンクがあるjspと同一画面の下部に表示するようにしたい))

という風にしたいです。
(まずこの考え方はあっているのでしょうか?)

〇調べていること
『javascript Java 実行』などのキーワードで調べており、現在javaアプレットを使用すれば可能なのでは?と至り調べている最中です。
しかしイマイチ要領を得ないので、アドバイスを頂きたいです。

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib uri = "http://struts.apache.org/tags-html" prefix = "html" %> 4 5<!DOCTYPE html> 6<html:html> 7 <head> 8 <meta charset="UTF-8"> 9 <title>Insert title here</title> 10 <link rel = "stylesheet" href = "http://localhost:8081/Attendance_Apli/CSS/AttendanceCSS.css"> 11 </head> 12 <body id = "top_body"> 13 <div id = "top_mainDiv"> 14 <% String msg = (String)request.getAttribute("msg"); 15 if(msg != null){ 16 %> 17 <p><% out.println(msg); %></p><br> 18 <% } %> 19 <h1 >勤怠管理</h1> 20 <br> 21 <html:form action = "/attendance"> 22 <div id = "top_submit"> 23 <button type = "submit" name = "attendance" value = "I" id = "top_attend" >出勤</button> 24 <button type = "submit" name = "attendance" value = "O" id = "top_attend">退勤</button> 25 </div> 26 </html:form> 27 28 <br> 29 <html:link action = "/userlist" >ユーザー一覧</html:link> //★ここのリンクからjavascriptを実行したい 30 <br> 31 <a href = "http://localhost:8081/Attendance_Apli/JSP/list/MonthAttendance.jsp" id = "top_a">勤怠一覧(月次)</a> 32 <br> 33 <br> 34 <div id = "top_submit"> 35 <html:form action = "/logout"> 36 <html:submit property = "logout" value = "ログアウト"/> 37 </html:form> 38 </div> 39 </div> 40 </body> 41</html:html>

java

1package list; 2 3import java.sql.Connection; 4import java.sql.ResultSet; 5import java.sql.Statement; 6import java.util.ArrayList; 7import java.util.List; 8 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11import javax.servlet.http.HttpSession; 12 13import org.apache.struts.action.Action; 14import org.apache.struts.action.ActionForm; 15import org.apache.struts.action.ActionForward; 16import org.apache.struts.action.ActionMapping; 17 18import database.DBManager; 19import model.LoopListForm; 20import model.UserActionForm; 21 22/** 23 * 24 * @author cellua 25 * 26 * DBのM_USERからデータを取り出して、 27 * ユーザー一覧画面に表示させる 28 */ 29public class UserListAction extends Action { 30 public ActionForward execute 31 (ActionMapping mapping , 32 ActionForm form , 33 HttpServletRequest request , 34 HttpServletResponse response) 35throws Exception{ 36 Connection conn = DBManager.getConnection(); //DB接続 37 38 39 //sessionからIDを受け取って、権限をselectしにいく 40 HttpSession session = request.getSession(false); 41 String userID = (String)session.getAttribute("userID"); 42 String preSql = "SELECT AUTH FROM M_USER WHERE USER_ID = '" + userID + "'"; 43 Statement preSmt = conn.createStatement(); 44 ResultSet preRs = preSmt.executeQuery(preSql); 45 preRs.next(); 46 String auth = preRs.getString("AUTH"); 47 48 //ログインユーザーの権限に応じて表示できるか、できないかを分岐させる 49 if(!auth.equals("0")) { 50 request.setAttribute("msg" , "ユーザー一覧の閲覧権限がありません"); 51 return (mapping.findForward("toTop")); 52 } 53 54 //DBから使用ユーザーのデータをselect 55 String sql = "SELECT * FROM M_USER "; 56 57 Statement smt = conn.createStatement(); 58 ResultSet rs = smt.executeQuery(sql); 59 60 61 //データ格納用のlistとloop作成 62 List<UserActionForm> list = new ArrayList<UserActionForm>(); 63 LoopListForm loop = new LoopListForm(); 64 65 while(rs.next()) { 66 67 //ActionFormインスタンス作成 68 UserActionForm uaf = new UserActionForm(); 69 70 //TOP画面に載せる情報を抜き出す 71 uaf.setUserID(rs.getString("USER_ID")); 72 uaf.setName(rs.getString("NAME")); 73 uaf.setAuth(rs.getString("AUTH")); 74 uaf.setSex(rs.getString("SEX")); 75 uaf.setMail(rs.getString("MAIL_ADDRESS")); 76 uaf.setCreateDate(rs.getDate("CREATE_DATE")); 77 uaf.setDate(rs.getDate("UPDATE_DATE")); 78 79 list.add(uaf); 80 } 81 loop.setLoop(list); 82 83 request.setAttribute("list" , list); 84 request.setAttribute("loopData" , loop); 85 86 87 if(list.size() > 0) { 88 //一覧画面へ画面遷移 89 DBManager.closeDataBase(smt, conn); 90 return (mapping.findForward("toUserList")); 91 }else { 92 //エラー画面へ遷移 93 DBManager.closeDataBase(smt, conn); 94 return (mapping.findForward("error")); 95 } 96 97 } 98 99}

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

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

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

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

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

plasticgrammer

2020/11/11 05:50

現行の実装のまま、遷移先のJSPを遷移元のJSPと同じになるように修正するのはダメなのでしょうか。 理由があれば追記をお願いします。 ※javaアプレットは過去の技術なので、その実装はオススメできません
Y.Mamoru

2020/11/11 05:57

アプリとしてはいいのですが、あくまで課題の一環として行っている最中でして。。。 javaアプレットにこだわってはおらず、javascriptを使って表示までもっていければそれでよし!という感じです。
guest

回答1

0

ベストアンサー

Java側で「アクセスされれば特定の動作を実行する」URLを用意して、それをJavaScriptから呼び出す…というような流れになります。

javaアプレットを使用すれば可能なのでは?

Javaアプレットは役割を終えた技術ですし、「アプレットからDBにアクセスする」ということはブラウザを使うクライアントから直接DBへアクセスさせるということです。セキュリティ的に考えて、通常取るべき構造ではありません。

投稿2020/11/11 05:48

編集2020/11/11 05:48
maisumakun

総合スコア146018

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

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

Y.Mamoru

2020/11/11 05:58

なるほど。ありがとうございます! 調べて進めてみます。 javaアプレットはそうなのですね。 仰っていただいた方法で進めていきます(^^;
Y.Mamoru

2020/11/11 06:10

すみません、ここでいうURLとはユーザー関数とはまた違いますよね?(><)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問