【JavaWeb程序设计】JSP编程

目录

一、编写JSP页面,在界面上显示1-9,9个链接,单击每个链接,能够在另一个页面打印该数字的平方。

1. 运行截图

2. 第一个jsp页面(index.jsp)

3. 第二个jsp页面(square.jsp)

二、完成如下要求

2.1 编写页面1,声明计算阶乘的方法,该页面能够接收一个参数,并将该参数转换为数值,计算该数值的阶乘,最后在页面上输出结果。

2.2 编写页面2,编写表单使之能够接受用户输入的数值,并提交到页面1进行阶乘计算并显示计算结果。

2.1.1 运行截图

2.1.2 页面1(factorial.jsp)

2.2.1 页面2(form.jsp)

三、按要求完成如下JSP页面

3.1 编写页面1,制作一个登陆表单,包含账号、密码输入框、提交按钮。输入账号和密码,点击提交按钮,如果账号密码相等(使用java脚本实现),则显示“登陆成功”,否则显示“登陆失败”。

3.1.1 运行截图

3.1.2 源代码

3.2 编写页面2,输入账号密码,进行登陆,如果账号和密码相同,认为登陆成功,转到页面3,页面3中显示一个文本框输入用户姓名,输入之后提交,在页面4中显示用户的账号和姓名。

3.2.1 运行截图

3.2.2 页面2(login2.jsp)

3.2.3 重定向页面(loginProcess.jsp)

3.2.4 页面3(inputName.jsp)

3.2.5 页面4(displayInfo.jsp)

四、心得体会

1. 出现中文乱码的问题如何解决?

1.1 页面2登录账号输入正确中文账号名变成乱码提示登录出错

1.2 页面3输入中文出现乱码如下


一、编写JSP页面,在界面上显示1-9,9个链接,单击每个链接,能够在另一个页面打印该数字的平方。

1. 运行截图

2. 第一个jsp页面(index.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>求数字平方</title>
</head>
<body><p>点击下方数字求平方和</p><ul><% for(int num=1;num<=9;num++){ %><li><a href="square.jsp?num=<%= num %>"><%= num %></a> </li><% } %></ul></body></html>

3. 第二个jsp页面(square.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>求数字平方</title>
</head>
<body><%String numStr = request.getParameter("num");int num = Integer.parseInt(numStr);int squaredNum = num * num;out.println(num + " 的平方是 " + squaredNum);%>
</body>
</html>

二、完成如下要求

2.1 编写页面1,声明计算阶乘的方法,该页面能够接收一个参数,并将该参数转换为数值,计算该数值的阶乘,最后在页面上输出结果。

2.2 编写页面2,编写表单使之能够接受用户输入的数值,并提交到页面1进行阶乘计算并显示计算结果。

2.1.1 运行截图

2.1.2 页面1(factorial.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>计算阶乘</title>
</head>
<body>
<%!//声明计算阶乘的方法long factorial(int n) {if (n == 0) return 1;else return n * factorial(n - 1);}
%>
<%//获取传递的参数值String param = request.getParameter("number");int number = Integer.parseInt(param);//调用计算方法long result = factorial(number);
%><p>阶乘为:<%= result %></p>
</body>
</html>

2.2.1 页面2(form.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>阶乘计算</title>
</head>
<body>
<form action="factorial.jsp" method="get"><label for="number">请输入一个数值:</label><input type ="number" id="number" name="number" required><input type="submit" value="计算阶乘">
</form></body>
</html>

三、按要求完成如下JSP页面

3.1 编写页面1,制作一个登陆表单,包含账号、密码输入框、提交按钮。输入账号和密码,点击提交按钮,如果账号密码相等(使用java脚本实现),则显示“登陆成功”,否则显示“登陆失败”。

3.1.1 运行截图

3.1.2 源代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录</title>
</head>
<body>
<%--------------------JSP程序段------------------------%>
<%//获取账号密码String username = request.getParameter("username");String password = request.getParameter("password");//如果账号密码相同,提示登录成功,否则提示登录失败。if (username != null && password != null) {if ("可爱小浩".equals(username) && "lh666".equals(password)) {%><span style="color: #FF0000"><%="登录成功"%></span><%} else {%><span style="color: #FF0000"><%="登录失败"%></span><%}}
%><%------------------------登录表单-------------------------%>
<form action="./login.jsp" method="get"><label for="username">账号:</label><input type="text" id="username" name="username" value="<%= username!=null?username:""%>" required><br><br><label for="password">密码:</label><input type="text" id="password" name="password" value="<%= password!=null?password:""%>" required><input type="submit" value="提交">
</form></body>
</html>

3.2 编写页面2,输入账号密码,进行登陆,如果账号和密码相同,认为登陆成功,转到页面3,页面3中显示一个文本框输入用户姓名,输入之后提交,在页面4中显示用户的账号和姓名。

3.2.1 运行截图

页面2输入账号和密码:

 重定向到页面3:

输入姓名:

 页面4显示账号和姓名:

3.2.2 页面2(login2.jsp)

输入账号密码,如果登录成功跳转到页面3,否则输出“登录失败!”

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head><title>登录</title>
</head>
<body>
<%---------------------JSP程序段--------------------------%>
<%//输错账号密码提示登录失败的信息String msg = request.getParameter("msg");if (msg != null) {%><span style="color: #FF0000"><%="登录失败!"%></span>
<% }%><%------------------------登录表单-------------------------%>
<form action="loginProcess.jsp" method="POST"><label for="username">账号:</label><input type="text" id="username" name="username" required><br><br><label for="password">密码:</label><input type="text" id="password" name="password" required><input type="submit" value="提交">
</form></body>
</html>

3.2.3 重定向页面(loginProcess.jsp)

如果登录成功,重定向到页面3(inputName.jsp),并且将页面2的username编码传递给页面3;否则,重定向到页面2(login2.jsp)。

<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.nio.charset.StandardCharsets" %><%--Created by RUI.User: 86189Date: 2023/10/8判断账号密码是否相同
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%--------------------------JSP程序段------------------------------%>
<%
//    解决中文乱码问题request.setCharacterEncoding("UTF-8");
//    登录验证String username = request.getParameter("username");String password = request.getParameter("password");//    如果账号密码相同,则重定向到页面3(inputName.jsp)if ("小煊".equals(username) && "ryx666".equals(password)) {//通过表单提交数据或在 URL 中传递中文参数时,由于我这边浏览器编码是ACSII编码,无法对中文进行编码//故对 username 进行编码,并将编码后的结果作为参数传递给 inputName.jsp 页面String encode = URLEncoder.encode(username, StandardCharsets.UTF_8);response.sendRedirect("inputName.jsp?username=" + encode);} else {
//        否则重定向到页面1(login2.jsp)并显示登录失败的消息。response.sendRedirect("login2.jsp?msg=failed");}
%>

3.2.4 页面3(inputName.jsp)

输入姓名,接收loginProcess.jsp传来的对页面2(login2.jsp)中username经过编码的参数值且解码

<%@ page import="java.net.URLDecoder" %>
<%@ page import="java.nio.charset.StandardCharsets" %><%--Created by RUI.User: 86189Date: 2023/10/8输入姓名
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>输入姓名</title>
</head>
<body>
<%
//    获取 loginProcess.jsp 经过编码的参数值String userName = (String) request.getParameter("username");
//    解码userName = URLDecoder.decode(userName, StandardCharsets.UTF_8);
%>
<%-----------------------------输入姓名表单--------------------------%>
<form action="displayInfo.jsp" method="POST"><label for="name">请输入姓名:</label><input type="text" id="name" name="name" required><input type="hidden" id="username" name="username" value="<%=userName%>" required><input type="submit" value="提交">
</form>
</body>
</html>

3.2.5 页面4(displayInfo.jsp)

显示页面2中的username和页面3中的name

<%--Created by RUI.User: 86189Date: 2023/10/8显示用户的账号和密码
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户信息</title>
</head>
<body>
<%---------------------JSP程序段--------------------------%>
<%request.setCharacterEncoding("UTF-8");  //解决中文乱码问题String username = request.getParameter("username"); //账号String name = request.getParameter("name"); //密码
%>
<p> 账号:<%= username %> </p>
<p> 姓名:<%= name %>  </p></body>
</html>

四、心得体会

1. 出现中文乱码的问题如何解决?

1.1 页面2登录账号输入正确中文账号名变成乱码提示登录出错

解决办法如下

在loginProcess.jsp接收请求的JSP 页面的开头部分,添加以下代码来手动设置请求的字符编码为 UTF-8

1.2 页面3输入中文出现乱码如下

解决办法如下

在displayInfo.jsp接收请求的JSP 页面的开头部分,添加以下代码来手动设置请求的字符编码为 UTF-8:

重新运行成功解决!

2. 学习和掌握 JSP 的基本语法、URL 传值和表单传值等,深入了解了 JSP 的工作原理,并熟练掌握在集成环境中编辑、部署和运行 Web 工程。

3. 在实验过程中也遇到了一些困难和问题。最初,我对 JSP 的语法不太熟悉,需要花费一些时间来学习和理解。此外,在处理 URL 传值和表单传值时,我也遇到了一些小问题。

        比如在页面2的账号输入中文时,发现重定向不到页面3,但是浏览器任何提示都没有,通过debug发现,输入中文之后浏览器无法为之编码,直接视为无效被移除了。

        

        下面的代码中使用了 URLEncoder.encode() 方法对 username 进行编码,并将编码后的结果作为参数传递给 sendRedirect() 方法。这样可以确保传递的参数在 URL 中正确编码,以防止特殊字符或非ASCII字符引起的问题。

然后,通过调用 response.sendRedirect() 方法进行重定向,将编码后的用户名作为参数附加到目标页面(inputName.jsp)的 URL 中。

        

        在 inputName.jsp 页面中使用下面的代码来获取传递的参数,这样可以首先通过 request.getParameter() 获取经过编码的参数值,然后使用 URLDecoder.decode() 对其进行解码,得到原始的 username 值。

        通过查阅文档和教程,我很快就解决了这些问题,并加深了对 JSP 的理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Arc for Windows 无法使用?一篇文章教会你!

&#x1f44b; 大家好&#xff0c;我是 Beast Cheng &#x1f4eb; 联系我&#xff1a;458290771qq.com &#x1f331; 接合作、推广…… 什么是Arc浏览器&#xff1f; Arc浏览器是The Browser Conpany使用Swift语言开发的一款浏览器&#xff0c;Arc浏览器由其漂亮的侧边栏闻名…

Python 异步编程介绍与代码示例

Python 异步编程介绍与代码示例 一、异步编程概述 异步编程是一种编程范式&#xff0c;它旨在处理那些需要等待I/O操作完成或执行耗时任务的情况。在传统的同步编程中&#xff0c;代码会按照顺序逐行执行&#xff0c;直到遇到一个耗时操作&#xff0c;它会阻塞程序的执行直到…

Codeforces Round 903 (Div. 3)A~F

A.Dont Try to Count 输入样例&#xff1a; 12 1 5 a aaaaa 5 5 eforc force 2 5 ab ababa 3 5 aba ababa 4 3 babb bbb 5 1 aaaaa a 4 2 aabb ba 2 8 bk kbkbkbkb 12 2 fjdgmujlcont tf 2 2 aa aa 3 5 abb babba 1 19 m mmmmmmmmmmmmmmmmmmm输出样例&#xff1a; 3 1 2 -1 1 0…

1999-2022年企业持续绿色创新水平数据

企业持续绿色创新水平数据为研究者提供了评估企业在绿色技术领域创新持续性和能力的重要视角。以下是对企业持续绿色创新水平数据的介绍&#xff1a; 数据简介 定义&#xff1a;企业持续绿色创新水平反映了企业在一定时期内绿色专利申请的持续性和创新能力。计算方法&#xf…

初识STM32:开发方式及环境

STM32的编程模型 假如使用C语言的方式写了一段程序&#xff0c;这段程序首先会被烧录到芯片当中&#xff08;Flash存储器中&#xff09;&#xff0c;Flash存储器中的程序会逐条的进入CPU里面去执行。 CPU相当于人的一个大脑&#xff0c;虽然能执行运算和执行指令&#xff0c;…

通信协议:常见的芯片内通信协议

相关阅读 通信协议https://blog.csdn.net/weixin_45791458/category_12452508.html?spm1001.2014.3001.5482 本文将简单介绍一些常见的芯片间通信协议&#xff0c;但不会涉及到协议的具体细节。 一、AMBA&#xff08;Advanced Microcontroller Bus Architecture&#xff09;…

MySQL之备份与恢复(七)

备份与恢复 文件系统快照 规划LVM备份 LVM快照备份也是有开销的。服务器写到原始卷的越多&#xff0c;引发的额外开销也越多。当服务器随机修改许多不同块时&#xff0c;磁头需要需要自写时复制空间来来回回寻址&#xff0c;并且将数据的老版本写到写时复制空间。从快照中读…

刷题之多数元素(leetcode)

多数元素 哈希表解法&#xff1a; class Solution { public:/*int majorityElement(vector<int>& nums) {//map记录元素出现的次数&#xff0c;遍历map&#xff0c;求出出现次数最多的元素unordered_map<int,int>map;for(int i0;i<nums.size();i){map[nu…

最适合mysql5.6安装的linux版本-实战

文章目录 一, 适合安装mysql5.6的linu版本1. CentOS 72. Ubuntu 14.04 LTS (Trusty Tahr)3. Debian 8 (Jessie)4. Red Hat Enterprise Linux (RHEL) 7 二, 具体以Ubuntu 14.04 LTS (Trusty Tahr)为例安装虚拟机安装Ubuntu 14.04 LTS (Trusty Tahr) 自己弄安装ssh(便于远程访问,…

前端八股文 对$nextTick的理解

$nexttick是什么? 获取更新后的dom内容 为什么会有$nexttick ? vue的异步更新策略 (这也是vue的优化之一 要不然一修改数据就更新dom 会造成大量的dom更新 浪费性能) 这是因为 message &#xff08;data&#xff09;数据在发现变化的时候&#xff0c;vue 并不会立刻去更…

240705_昇思学习打卡-Day17-基于 MindSpore 实现 BERT 对话情绪识别

240705_昇思学习打卡-Day17-基于 MindSpore 实现 BERT对话情绪识别 近期确实太忙&#xff0c;此处仅作简单记录&#xff1a; 模型简介 BERT全称是来自变换器的双向编码器表征量&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;&#xff0c…

【wordpress教程】wordpress博客网站添加非法关键词拦截

有的网站经常被恶意搜索&#xff0c;站长们不胜其烦。那我们如何屏蔽恶意搜索关键词呢&#xff1f;下面就随小编一起来解决这个问题吧。 后台设置预览图&#xff1a; 设置教程&#xff1a; 1、把以下代码添加至当前主题的 functions.php 文件中&#xff1a; add_action(admi…

CVPR 2024最佳论文分享:通过解释方法比较Transformers和CNNs的决策机制

CVPR&#xff08;Conference on Computer Vision and Pattern Recognition&#xff09;是计算机视觉领域最有影响力的会议之一&#xff0c;主要方向包括图像和视频处理、目标检测与识别、三维视觉等。近期&#xff0c;CVPR 2024 公布了最佳论文。共有10篇论文获奖&#xff0c;其…

计算组的妙用!!页面权限控制

需求描述&#xff1a; 某些特殊的场景下&#xff0c;针对某页看板&#xff0c;需要进行数据权限卡控&#xff0c;但是又不能对全部的数据进行RLS处理&#xff0c;这种情况下可以利用计算组来解决这个需求。 实际场景 事实表包含产品维度和销售维度 两个维度属于同一公司下面的…

【Python】已解决:FileNotFoundError: [Errno 2] No such file or directory: ‘./1.xml’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;FileNotFoundError: [Errno 2] No such file or directory: ‘./1.xml’ 一、分析问题背景 在Python编程中&#xff0c;FileNotFoundError是一个常见的异常&…

贝尔曼方程(Bellman Equation)

贝尔曼方程(Bellman Equation) 贝尔曼方程(Bellman Equation)是动态规划和强化学习中的核心概念,用于描述最优决策问题中的价值函数的递归关系。它为状态值函数和动作值函数提供了一个重要的递推公式,帮助我们计算每个状态或状态-动作对的预期回报。 贝尔曼方程的原理 …

Python 自动化测试必会技能板块—unittest框架

说到 Python 的单元测试框架&#xff0c;想必接触过 Python 的朋友脑袋里第一个想到的就是 unittest。 的确&#xff0c;作为 Python 的标准库&#xff0c;它很优秀&#xff0c;并被广泛应用于各个项目。但其实在 Python 众多项目中&#xff0c;主流的单元测试框架远不止这一个…

西门子PLC1200--与电脑S7通讯

硬件构成 PLC为西门子1211DCDCDC 电脑上位机用PYTHON编写 二者通讯用网线&#xff0c;通讯协议用S7 PLC上的数据 PLC上的数据是2个uint&#xff0c;在DB1&#xff0c;地址偏移分别是0和2 需要注意的是DB块要关闭优化的块访问&#xff0c;否则是没有偏移地址的 PLC中的数据内…

elementui中日期/时间的禁用处理,使用传值的方式

项目中,经常会用到 在一个学年或者一个学期或者某一个时间段需要做的某件事情,则我们需要在创建这个事件的时候,需要设置一定的时间周期,那这个时间周期就需要给一定的限制处理,避免用户的误操作,优化用户体验 如下:需求为,在选择学年后,学期的设置需要在学年中,且结束时间大…

软件架构之计算机组成与体系结构

1.1计算机系统组成 计算机系统是一个硬件和软件的综合体&#xff0c;可以把它看成按功能划分的多级层次结构。 1.1.1 计算机硬件的组成 硬件通常是指一切看得见&#xff0c;摸得到的设备实体。原始的冯•诺依曼&#xff08;VonNeumann&#xff09;计算机在结构上是以运算器为…