在网页中使用Java编程 郝伟 2020/11/15 [TOC]
日志 2020/11/15 初始化发布文档 2022/08/29 更新部分错误内容修正
1. 1 简介
首先,务必记住: 静态html的是无法调用java程序的! 静态html的是无法调用java程序的!! 静态html的是无法调用java程序的!!!
所以,需要在网页中调用Java编程,可以通过下面几个方法实现:
1.1. 1.1 在表单中执行
将按钮放到form表单中,当按钮点击时提交表单(或者直接将input的type属性定义成submit),表单可以指向专JSP或Servlet,在JSP或Servlet里调用java程序
1.2. 1.2 使用JS链接实现
在按钮的onclick时间中添加js代码 self.location="url" 其中url指向JSP或Servlet
1.3. 1.3 使用第三方的javascript包dwr
dwr是一个不错的选择。具体过程如下:
- 准备dwr的jar包,并将之放到lib目录下;
- 修改web.xml文件,添加DWRServlet的映射;
- 配置dwr,即在WEB-INF目录下,添加dwr.xml文件,让dwr知道在运行的时候应该给哪些JavaBean生成相应的javascript库!将需要的脚本库引入到html页面中就可以通过dwr的API访问java类了,网上参考资料挺多的,照做即可。
1.4. 1.4 用MVC框架
以struts为例,可以仿照属1或2,将url替换成配置文件中配置的地址就能访问java程序。
2. 2 在JSP中调用Java
参考资料
- jsp网站访问次数统计的几种方法 有些语言错误,但是总体思路没问题。
2.1. Exp 1:简单变量定义和使用
完整的HTML文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<% int count = 0; count=count+1;//修改记录,数据加1 %>
<p>count = <%=count %></p>
<% count=count+1;//修改记录,数据加1%>
<p>count = <%=count %></p>
</body>
</html>
2.2. Exp 2:定义函数并调用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<%! final double PI=Math.PI; //定义常量
double r; //定义变量
double getArea(double a){ //定义方法
return PI*a*a;
}
double getLength(double a) { //定义方法
return 2*PI*a;
}
%>
</head>
<body>
<% int count = 0; count=count+1;//修改记录,数据加1 %>
<p>count = <%=count %></p>
<% count=count+1;//修改记录,数据加1%>
<p>count = <%=getArea(count) %></p>
</body>
</html>
2.3. Exp 3:向界面输出
简单模式,以下内容显示为 123乘以321等于 39483。
<% int x = 123, y = 321; %>
<%=x%>乘以<%=y%>等于 <%=x*y%>
复杂模式,以下内容显示为
调用getArea方法计算半径是100.0的园的面积: 31415.926535897932
调用getLength方法计算半径是50.0的园的周长: 314.1592653589793
<%!
final double PI=Math.PI; //定义常量
double r; //定义变量
double getArea(double a){ //定义方法
return PI*a*a;
}
double getLength(double a) { //定义方法
return 2*PI*a;
}
r=100;
out.println("调用getArea方法计算半径是"+r+"的园的面积:");
double area=getArea(r);
out.println(area);
r=50;
out.println("<BR>调用getLength方法计算半径是"+r+"的园的周长:");
double length=getLength(r);
out.println(length);
%>
2.4. Exp 4:调用类
- 首先建立类
package utils;
public class PageCounter {
public static String test(){
return "hello";
}
}
编译后置于 WEB-INF/classes/utils/PageCounter.class
在 <html> 上方加入以下内容:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="utils.PageCounter"%>
然后在 <body> 中进行调用 <% out.print(PageCounter.test()); %>
2.5. Exp 5:Java读文件
网页调用代码:
Content: <br><% out.print(PageCounter.readToString("/opt/apache-tomcat-8.5.57/webapps/ROOT/WEB-INF/web.xml")); %>
Java实现代码
// 省略类头部分...
public static String readToString(String fileName) {
String encoding = "UTF-8";
File file = new File(fileName);
Long filelength = file.length();
byte[] filecontent = new byte[filelength.intValue()];
try {
FileInputStream in = new FileInputStream(file);
in.read(filecontent);
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
return new String(filecontent, encoding);
} catch (Exception e) {
System.err.println("The OS does not support " + encoding);
e.printStackTrace();
return null;
}
}
显示内容
Welcome to Tomcat Welcome to Tomcat MyServlet MyServlet MyServlet MyServlet /MyServlet