在网页中使用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

参考资料

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:调用类

  1. 首先建立类
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

results matching ""

    No results matching ""