helloworld.js
: print('Hey you!');
./lib
, we run the example as follows: java -Djava.ext.dirs=./lib org.mozilla.javascript.tools.shell.Main helloworld.js
java -Djava.ext.dirs=./lib org.mozilla.javascript.tools.debugger.Main helloworld.js
Packages
object for working with packages. For example, you can create an instance of java.io.File
: var file = new Packages.java.io.File('filename');
java
, com
, org
, edu
and net
, so the code can be reduced to the following: var file = new java.io.File('filename');
var File = java.io.File; //... var file = new File('filename');
importClass(java.io.File); //... var file = new File('filename');
importPackage(java.io); //... var file = new File('filename');
var runnable = new java.lang.Runnable({run: function() { print("I'm running!"); }}); new java.lang.Thread(runnable).start();
java.lang
not imported into the global context to avoid conflicts with the built-in ECMAScript types.-require
../modules/math.js
: exports.sum = function(a, b) { return a + b; }
var math = require('math'); print(math.sum(2, 4));
java -Djava.ext.dirs=./lib org.mozilla.javascript.tools.shell.Main -require -modules ./modules test.js
importPackage(org.eclipse.jetty.server); var server = new Server(8888); // 8888 server.start(); server.join(); // Jetty
./lib
, in the future we will run everything like this: java -Djava.ext.dirs=./lib org.mozilla.javascript.tools.shell.Main -require -modules ./modules server.js
HTTP 404
on any request. Let's turn it into a simple file server. importPackage(org.eclipse.jetty.server); importPackage(org.eclipse.jetty.server.handler); var resourceHandler = new ResourceHandler(); resourceHandler.setDirectoriesListed(true); // resourceHandler.setResourceBase('web'); // ./web resourceHandler.setWelcomeFiles(['index.html']); // index.html var server = new Server(8888); server.setHandler(resourceHandler); server.start(); server.join();
importPackage(org.eclipse.jetty.server); importPackage(org.eclipse.jetty.server.handler); importPackage(org.eclipse.jetty.servlet); importPackage(javax.servlet.http); var contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); contextHandler.setContextPath('/'); contextHandler.addServlet( new ServletHolder(new HttpServlet({ // , doGet: function(request, response) { response.setContentType('text/plain'); response.getWriter().println('Yes, it works!'); } })), '/test' ); var server = new Server(8888); server.setHandler(contextHandler); server.start(); server.join();
localhost:8888/test
localhost:8888/test
. As one more example, let's design as a servlet module, which generates a picture with text on the fly. importPackage(java.awt.image); importClass(java.awt.Color); importClass(javax.imageio.ImageIO); // J2SE 6 var width = 400, height = 400; exports.doGet = function(request, response) { var image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); var graphics = image.createGraphics(); var color = new Color(Math.random(), Math.random(), Math.random()); graphics.setColor(color); graphics.fillRect(0, 0, width, height); graphics.setColor(color.brighter()); graphics.drawString('On the fly!', 10, 20); response.setContentType('image/png'); var outputStream = response.getOutputStream(); ImageIO.write(image, 'png', outputStream); outputStream.close(); };
./modules
folder as imageServlet.js
and include it in the server code: contextHandler.addServlet( new ServletHolder(new HttpServlet(require('imageServlet'))), '/image.png' );
importPackage(java.sql); exports.doGet = function(request, response) { try { var connection = DriverManager.getConnection('jdbc:mysql://localhost/?', 'root', ''); try { var resultSet = connection .createStatement() .executeQuery('show databases;'); response.setContentType('text/html;charset=UTF-8'); var writer = response.getWriter(); writer.println('<h1>Databases</h1>'); while (resultSet.next()) { writer.println(resultSet.getString('Database') + '<br />'); } } catch(e) {} finally { resultSet.close(); } } catch(e) {} finally { if(connection) connection.close(); } };
./templates/template.ftl
such a pattern: <html> <head> <title>${title}</title> </head> <body> <h1>${title}</h1> <#if message??> <pre>${message?html}</pre> <#else> <form method="post"> <textarea name="message"></textarea> <p><input type="submit" value="Post!"/></p> </form> </#if> </body> </html>
?html
replaces those special characters in the substituted variable with escape sequences. This template will use the following servlet: importPackage(Packages.freemarker.template); importPackage(Packages.freemarker.ext.rhino); var configuration = new Configuration(); configuration.setObjectWrapper(new RhinoWrapper()); // . var template = configuration.getTemplate('templates/template.ftl'); exports.doGet = function(request, response) { response.setContentType('text/html;charset=UTF-8'); template.process( {'title': 'Compose a message'}, response.getWriter() ); }; exports.doPost = function(request, response) { response.setContentType('text/html;charset=UTF-8'); template.process( { 'title': 'Message', 'message': request.getParameter('message') }, response.getWriter() ); };
Source: https://habr.com/ru/post/183334/
All Articles