jsp生成html(方法简单,只用使用一个serlvet)

本文介绍了一个简单的Java Servlet程序,用于将动态JSP页面转换为静态HTML文件。通过配置Servlet并指定URL参数,可以轻松地从指定的JSP页面生成静态HTML副本。

1   toHtml.java(不用修改,直接用)
package com.jetsum.mystatic;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class toHtml extends HttpServlet {

        public void service(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {
                String url = request.getParameter("urls")!=null?request.getParameter("urls"):""; 
                //url是要生成htm的jsp页面
                String name = "";
                response.setContentType("text/html;charset=gb2312");
                ServletContext sc = getServletContext();
                System.out.println("request.getRealPath"+request.getRealPath(""));
                 name = request.getRealPath("") + "/index.htm";      /*生成htm页  位置在%服务器的根目录%/工程名/index.htm 例如:d:/tomcat5.0/webapp/studyteach/index.htm  ,注意这里是在根目录生成,你可以生成后放到你想放的文件夹里,保证其它东西如图片的路径正确     这里就写成name = request.getRealPath("") + "/kszx/kszx.htm";      */

              RequestDispatcher rd = sc.getRequestDispatcher(url);

                final ByteArrayOutputStream os = new ByteArrayOutputStream();

                final ServletOutputStream stream = new ServletOutputStream()
                {
                        public void write(byte[] data, int offset, int length) {
                                os.write(data, offset, length);
                        }

                        public void write(int b) throws IOException {
                                os.write(b);
                        }
                };

                final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));

                HttpServletResponse rep = new HttpServletResponseWrapper(response)
                {
                        public ServletOutputStream getOutputStream() {
                                return stream;
                        }

                        public PrintWriter getWriter() {
                                return pw;
                        }
                };
                rd.include(request, rep);
                pw.flush();
                FileOutputStream fos = new FileOutputStream(name); // 把jsp输出的内容写到xxx.htm
                os.writeTo(fos);
                fos.close();
                PrintWriter out = response.getWriter();
                out.print("<p align=center><font size=3 color=red>首页已经成功生成!</font></p>");
        }
}
web.xml
中添加
   <servlet>
    <servlet-name>tohtm</servlet-name>
    <servlet-class>com.jetsum.mystatic.toHtml</servlet-class>
</servlet>

  <servlet-mapping>
    <servlet-name>tohtm</servlet-name>
    <url-pattern>/web/tohtm</url-pattern>
  </servlet-mapping>
使用方法很简单  mytest.jsp(wwwroot下)
<a href="web/tohtm?urls=/kszx/kszx.jsp">生成静态页</a>    kszx.jsp为要生成htm的动态页
如果不在wwwroot下,在wwwroot/pp下
就要写成
<a href="../web/tohtm?urls=/kszx/kszx.jsp">生成静态页</a>

 

好的,这是一个简易的jsp+servlet计算器的实现步骤: 1. 创建一个JSP页面,包含一个表单,其中表单中有两个输入框,一个下拉框和一个提交按钮。下拉框中包含加、减、乘、除四个选项。 2. 在表单中提交按钮的onclick事件中,调用JavaScript函数,将表单中的数据通过Ajax方式发送到后台Servlet中。 3. 创建一个Servlet,用于接收前端发送过来的数据并进行计算,计算完成后将结果返回给前端。 4. 在Servlet中,通过request.getParameter()方法获取前端发送过来的数据,然后根据选择的运算符进行计算,并将结果存储在request作用域中。 5. 在Servlet中,通过request.getRequestDispatcher()方法跳转到结果展示的JSP页面。 6. 在JSP页面中,通过EL表达式获取Servlet中计算得到的结果,并将结果展示给用户。 7. 完成以上步骤后,即可实现一个简单jsp+servlet计算器。 这里是一个简单的示例代码: index.jsp: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>简易计算器</title> <script type="text/javascript"> function calculate() { var num1 = document.getElementById("num1").value; var num2 = document.getElementById("num2").value; var operator = document.getElementById("operator").value; if (num1 == "" || num2 == "") { alert("请输入数字!"); return false; } var url = "calculate?num1=" + num1 + "&num2=" + num2 + "&operator=" + operator; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { document.getElementById("result").innerHTML = xhr.responseText; } } xhr.open("GET", url, true); xhr.send(); } </script> </head> <body> <h1>简易计算器</h1> <form> <input type="text" id="num1" name="num1"> <select id="operator" name="operator"> <option value="+">+</option> <option value="-">-</option> <option value="*">*</option> <option value="/">/</option> </select> <input type="text" id="num2" name="num2"> <input type="button" value="计算" onclick="calculate()"> </form> <div id="result"></div> </body> </html> ``` CalculateServlet.java: ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CalculateServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int num1 = Integer.parseInt(request.getParameter("num1")); int num2 = Integer.parseInt(request.getParameter("num2")); String operator = request.getParameter("operator"); int result = 0; switch (operator) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/": result = num1 / num2; break; } request.setAttribute("result", result); request.getRequestDispatcher("result.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } ``` result.jsp: ```html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>计算结果</title> </head> <body> <h1>计算结果</h1> <p><%= request.getAttribute("result") %></p> </body> </html> ``` 希望这个示例代码能够帮到你!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值