J2EE学习总结(三)------用web的方式打开算法

本文介绍了如何使用Servlet结合HTML创建一个简单的web应用,实现用户输入斐波那契数列长度后,后台通过DP算法计算并显示结果。主要涉及表单数据获取、Servlet函数设计以及代码实现,适合初学者了解Servlet基础操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

例如:作为一个一直打算法竞赛的打铁选手(恼),学习了web之后就想过怎么在网页上写代码(其实是好奇那些算法网站是怎么做的),下面这个列子其实是我的第一个servlet程序,其实还是后端写的代码来在前端输出结果(大雾,果然y总yyds),虽然说这个算法对于各位大佬来说是大水题,但是本文主要要是为了熟悉servlet的使用,算法看个乐就行(才不是为了水博客)。


一、设计思路

1.表单获取输入信息

表单标签:<from></from>
重要属性:
input :表单元素,表单项
action:表示当前表单中的内容提交给哪个页面进行处理
type="text" :单行文本输入框
type="password":密码输入框  
type="submit" :将表单信息提交给表单属性action所指向的文件

2.算法实现

因为主要介绍servlet所以这一段略讲
思路很简单:只不过与传统的递归不同,我这里采用的是dp算法。
dp[i]表示第i个状态的值,然后递推求解就行了。

3.servlet的函数

这里主要展示我使用了的函数

输出的格式和编码
resp.setContentType("text/html;charset= utf-8");
设置输出流,然后通过out可以在页面显示输出结果
PrintWriter out = resp.getWriter();
表单中value的名字叫做number可以通过该方法获取
String str=req.getParameter("number");

二、主要的代码实现

1.html

代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>私人斐波拉契数列计算</title>
    </head>
    <body>
    <!--这里有一个知识点:相对路径和绝对路径,在客户端看的时候的理解 -->
    <form action="./privateMul">
        输入要计算的斐波拉契数列长度:
        <input type="text" name="number">
        <input type="submit" value="累加计算">
    </form>
    </body>
</html>

2.servlet子类设计

代码如下:

package servlet;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

//这里使用的是接口
public class PrivateMul extends HttpServlet {

    //输出一个前n个斐波拉契数列
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //输出的格式和编码
        resp.setContentType("text/html;charset= utf-8");
        //设置输出流
        PrintWriter out = resp.getWriter();
        //表单中value的名字叫做number可以通过该方法获取
        String str=req.getParameter("number");
        //字符串类型转换为整数类型
        int num=Integer.parseInt(str);
        int f[] =new int[1000];
        //计算斐波拉契数列,采用dp计算
        //首先初始化f[0],f[1];
        f[0]=f[1]=1;
        for(int i=2;i<num;i++){
            f[i]=f[i-1]+f[i-2];
        }
        //输出斐波拉契数列
        int cnt=0;
        out.println("计算出的斐波拉契数列为: ");
        for(int i=0;i<num;i++,cnt++){
            //每行输出十个数字
            if(cnt==10){
                out.println();
                cnt=0;
            }
            out.print(f[i]+" ");
        }
    }

}


三、其中出现的BUG

这一段代码中action属性中的绝对路径需要注意,否则容易不能跳转不到servlet界面


总结

servlet的第一个代码接这样第一次尝试出来了,但其中的很多小细节却是博客中没有写出来的,比如说对于每个文档的路径如何设计,如何保证能访问到该文件,这是我在这次小项目中所体会到的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值