Dieses Mal werde ich üben, wie man JavaScript in einer Java-Anwendung verwendet. Es gibt zwei Möglichkeiten, JavaScript in einer JSP und in einer Java-Datei zu üben.
eclipse tomcat java
IndexServlet.java index.jsp main.js Wird erstellt.
Es ist eine solche Hierarchie.
servlet.IndexServlet.java
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class IndexServlet
*/
@WebServlet("/IndexServlet")
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public IndexServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Das Servlet ist ohne Berührung in Ordnung. (Weil der Zweck darin besteht, JS mit JSP auszuführen)
index.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<style>
.box1 {
width: 200px;
height: 200px;
background-color: #ccffcc;
}
.box2 {
width: 200px;
height: 200px;
background-color: #ddd;
}
</style>
<body>
<h1>JS-Ausführungsbestätigung in JSP</h1>
<div class="box1">box1</div>
<div class="box2">box2</div>
<form action="IndexServlet" method="post">
Benutzeridentifikation:<input type="text" name="user_id" id="user_id">
Passwort:<input type="password" name="pass" id="pass">
<input type="submit" value="Einloggen" id="btn">
</form>
<input type="button" value="Siehe Passwort" id="passshow">
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="main.js"></script>
</body>
</html>
・ Ein Feld, dessen Farbe sich ändert, wenn Sie darauf klicken ・ Box, die mit dem Mauszeiger die Farbe ändert ・ Validierung des Anmeldeformulars Wir werden die drei umsetzen.
main.js
/* ---------Verarbeitung beim Klicken---------*/
$('.box1').on('click', (e) => {
$(e.target).css({'background-color': 'skyblue' });
});
/* ------Was passiert, wenn Sie mit der Maus darüber fahren?----------*/
const onMouseenter = (e) => {
$(e.target).css({
'background-color': '#ff9999',
});
};
const onMouseleave = (e) => {
$(e.target).css({
'background-color': '#dddddd',
});
};
$('.box2')
.on('mouseenter', onMouseenter)
.on('mouseleave', onMouseleave);
/*--------Machen Sie das Passwort sichtbar--------------*/
$('#passshow').on('click', () => {
$('#pass').attr('type', 'text');
});
/*----------Legen Sie die Validierung beim Login fest(Wenn es leer ist, spielen Sie)----------- */
$('#btn').on('click', (e) => {
const id = $('#user_id').val();
const pass = $('#pass').val();
if(!id){
e.preventDefault();
console.log(id);
alert('ID ist leer');
}
if(!pass){
e.preventDefault();
console.log(pass);
alert('Das Passwort ist leer');
}
})
Wir konnten JS wie oben beschrieben implementieren. (Ich konnte es genau so implementieren, wie es in HTML war.)
Als nächstes werde ich eine der Methoden zum Ausführen von JS in einer Java-Datei vorstellen. Alle Erklärungen sind im Code enthalten, schauen Sie also bitte vorbei. .. ..
Der folgende Code beschreibt die folgende Seite im Java-Dokumentationshandbuch von Oracle. https://docs.oracle.com/javase/jp/8/docs/technotes/guides/scripting/prog_guide/api.html
test.java
import java.io.File;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class test {
public static void main(String[] args) throws Exception{
//Erstellen Sie eine ScripteEnginManager-Instanz
ScriptEngineManager factory = new ScriptEngineManager();
//Geben Sie die JS-Skript-Engine mit der Methode getEngineByName der ScripteEngineManager-Instanz an
ScriptEngine engine = factory.getEngineByName("JavaScript");
//Verwendung der JS-Engine---------------------------------
//Anzeige auf der Konsole ・ Skript als JS-Anweisung auswerten
engine.eval("print('Hello World')");
//Klasse Java zum Lesen von Zeichendateien.io.Sie können jede JS-Datei mit FileReader ausführen
//Wenn sich dasselbe Paket in derselben Hierarchie befindet
File file1 = new File("src/test.js");
engine.eval(new java.io.FileReader(file1));
//Im Ressourcenordner auf derselben Ebene wie src
File file2 = new File("resources/test.js");
engine.eval(new java.io.FileReader(file2));
//put (Schlüsselname,Sie können den Quellcode im Schlüsselnamen mit (Quellcode) speichern
engine.put("file", file1);
//Absoluten Pfad mit getAbsolutePath abrufen ・ Skript als JS-Anweisung auswerten
engine.eval("print(file.getAbsolutePath())");
//Funktionen usw. können Variablen zugewiesen werden
String script1 = "function helle(name) { print('Hello' + name);}";
//Aufruf nach Variablenname(Im Motor gespeichert)- Bewerten Sie das Skript als JS-Anweisung
engine.eval(script1);
//In der Engine gespeicherte Funktionen und Methoden aufrufen. → Sie können Funktionen usw. ausführen. * Invocable bedeutet, dass Sie aufrufen können
Invocable inv1 = (Invocable) engine;
//Diesmal ist es eine Funktion, also invokeFunction("Funktionsname, der aufgerufen werden soll", "Streit")Kann mit ausgeführt werden
inv1.invokeFunction("helle", "Taro");
//"obj"Erstellen Sie ein Objekt mit dem Namen"obj"Definieren Sie auch die Methode des Objekts
String script2 = "var obj = new Object(); "
+ "obj.goodbye = function(name){print('Goodbye' + name + 'Herr.');}";
//In Engine speichern ・ Skript als JS-Anweisung auswerten
engine.eval(script2);
//Motor aufrufbar machen
Invocable inv2 = (Invocable) engine;
//Holen Sie sich das Objekt mit der Methode, die Sie aufrufen möchten (machen Sie es funktionsfähig)
Object obj1 = engine.get("obj");
//Diesmal ist es eine Methode, also invokeMethod(Objektname, "Methodenname", "Streit")Laufen Sie weiter
inv2.invokeMethod(obj1, "goodbye", "Jiro");
//Skriptfunktionen können als Methoden der Runnable-Schnittstelle behandelt werden. ・ Kann global verwendet werden
//Funktionsgenerierung ohne Argumente
String script3 = "function run() { print('java.lang.Rufen Sie die Runnable-Schnittstelle auf'); }";
//Machen Sie das Skript als JS-Anweisung auswertbar und aufrufbar
engine.eval(script3);
Invocable inv3 = (Invocable) engine;
//Holen Sie sich Runnable (Schnittstelle) und implementieren Sie die Skriptfunktion (inv3) als Methode r1
Runnable r1 = inv3.getInterface(Runnable.class);
//Erstellen Sie, indem Sie die Methode r1 an das Thread-Objekt übergeben (wo die Runnable-Schnittstelle implementiert ist).
Thread th1 = new Thread(r1);
//Starten Sie die Ausführung
th1.start();
//Argumentlose Methodengenerierung
String script4 = "var obj = new Object();"
+ "obj.run = function() {print('Aufruf der Runnable-Methode');}";
//Als Skript ausgewertet
engine.eval(script4);
//Erlaube, dass obj als Objekt behandelt wird
Object obj2 = engine.get("obj");
//Mach es aufrufbar
Invocable inv4 = (Invocable) engine;
//Holen Sie sich Runnable (Schnittstelle) und implementieren Sie die Skriptfunktion (inv4) als Methode r2
Runnable r2 = inv4.getInterface(obj2, Runnable.class);
//Erstellt durch Übergabe der Methode r1 an das Thread-Objekt (wo die Runnable-Schnittstelle implementiert ist)
Thread th2 = new Thread(r2);
th2.start();
}
}
Wenn Sie Java und JS wie diesmal eingeführt kombinieren können, können Sie anscheinend dynamischere Seiten erstellen.
Recommended Posts