【网络应用开发】实验3——Web组件重用与JavaBeans

news2024/11/19 1:36:29

目录

Web组件重用与JavaBeans预习报告

一、实验目的

二、实验原理

三、实验预习内容

1. 静态include指令何时执行?主页面和被包含的子页面是否转换为一个转换单元?

2.动作指令何时执行?主页面和被包含的子页面是否转换为一个转换单元?动作包含的子页面与主页面共享同一个请求吗?在不同的转换单元中如何进行数据的传递和共享?

3.动作与动作有什么相同点和不同点?与动作等价的其他两种写法如何表示?

4.什么是JavaBean?

5.访问JavaBean的三个JSP动作中动作的常用属性有哪些?这些属性各有什么作用?

Web组件重用与JavaBeans实验报告

一、实验目的

二、实验要求

三、实验内容及要求

1. include静态指令的使用。

2. 动作指令的使用。

3. 、、动作的使用

4. 使用JavaBean构造一个简单的计算器,能够进行“+、—、*、/”运算。

四、思考题

1. 什么是Model 1体系结构,有何缺点?

2. 什么是MVC设计模式?其优点是什么?

3. 实现MVC设计模式的一般步骤是什么?


Web组件重用与JavaBeans预习报告

一、实验目的

1. 理解静态包含和动态包含的概念,掌握相关指令和动作的使用;

2. 掌握JavaBeans的含义和创建方法;

3. 重点掌握在JSP页面中使用JavaBeans的标准动作。

二、实验原理

通过重用Web组件可以提高应用程序开发的效率和其可维护性。在JSP中可以通过包含机制和JavaBean实现Web组件的重用。

包含分为静态包含和动态包含。静态包含通过include指令实现,动态包含通过标准动作<jsp:include>实现。

在JSP页面中使用JavaBean是最重要的组件重用技术,这主要是通过下面3个标准动作实现的:

<jsp:useBean>

<jsp:setProperty>

<jsp:getProperty>

三、实验预习内容

1. 静态include指令何时执行?主页面和被包含的子页面是否转换为一个转换单元?

同一个转换单元的页面之间如何共享数据?

静态包含是在JSP页面转换阶段将另一个文件的内容包含到当前JSP页面中。静态include指令与主页面同时执行;主页面和被包含的子页面是转换为一个转换单元;同一个转换单元的页面之间通过request作用于共享。

2.<jsp:include>动作指令何时执行?主页面和被包含的子页面是否转换为一个转换单元?动作包含的子页面与主页面共享同一个请求吗?在不同的转换单元中如何进行数据的传递和共享?

jsp:include动作指令与main.jsp页面分别编译执行;主页面和被包含的子页面是转换为一个转换单元;动作包含的子页面与主页面共享同一个请求。

3.<jsp:forward>动作与<jsp:include>动作有什么相同点和不同点?与<jsp:forward>动作等价的其他两种写法如何表示?

转发到的页面处理完后并不将控制转回主页面。
<% RequestDispatcher view=request.getRequestDispatcher(? other.jsp? ) ;
View.forward(request,response) ;%>
< % pageContext.forward(? other.jsp? ) ;%>

4.什么是JavaBean?

JavaBeans是Java平台的组件技术,在Java Web开发中常用JavaBeans来存放数据、封装业务逻辑等,从而很好地实现业务逻辑和表示逻辑的分离,使系统具有更好的健壮性和灵活性。

5.访问JavaBean的三个JSP动作中<jsp:useBean>动作的常用属性有哪些?这些属性各有什么作用?

useBean动作的常用属性有:id属性:用来唯一标识一个bean实例。scope属性:指定bean实例的作用域。class属性:指定创建bean实例的java类。type属性:指定由id属性声明的变量的类型。session属性: 你可以在同一次会话的任意一个页面使用该JavaBean对象,该JavaBean对象在整个会话期间一直存在。使用jsp:useBean/创建JavaBean对象的
页面的<%@page %>指令元素的session属性值必须设置为true。

Web组件重用与JavaBeans实验报告

一、实验目的

1. 理解静态包含和动态包含的概念,掌握相关指令和动作的使用;

2. 掌握JavaBeans的含义和创建方法;

3. 重点掌握在JSP页面中使用JavaBeans的标准动作。

二、实验要求

1. 实验前进行预习,完成实验预习报告;

2.按照每一项实验内容进行上机实践与编程,将程序源代码和运行结果图附在实验报告中实验内容对应的部分。

3. 实验预习报告和实验报告打印装订在一起。

4. 将每一次实验的源代码按目录组织保存并压缩,按照老师指定的要求进行提交。代码保存方式如:exp03表示实验三Web项目的名称,其下保存各项实验内容的源文件及相关资源,将整个exp03文件夹进行压缩后命名为班级-姓名-实验03,如:计171-张三-实验03。

三、实验内容及要求

1. include静态指令的使用。

创建名称为exp03的Web项目,编写hello.jsp页面,其中声明一个变量userName,用于获取请求地址后查询串参数userName的值;使用<%@ include>静态指令包含response.jsp页面,通过response.jsp页面显示userName的值,用下面两种方法实现。执行代码并查看运行结果。

方法一:response.jsp页面中通过JSP表达式直接输出变量userName的值。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>response</title>
</head>
<body>
    hello,<%=request.getParameter("username") %><br />
</body>
</html> 

方法二:通过pageContext作用域属性,在主页面和子页面间共享userName的值,降低主页面和子页面的依赖性。

2. <jsp:include>动作指令的使用。

编写main.jsp页面,其中声明一个变量userName,用于获取请求地址后查询串参数userName的值;在main.jsp页面中使用<jsp:include>动作包含subpage.jsp页面,通过subpage.jsp页面显示userName的值;执行代码并查看运行结果。

main.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
</head>
<body>
<jsp:include page="subpage.jsp">
    <jsp:param name="userName" value="little bears"/>
</jsp:include>
</body>
</html>

subpage.jsp 

<%@ page language="java" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
</head>
<body>
hello!<%=request.getParameter("userName") %>
</body>
</html>

3. <jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>动作的使用

从HTML页面login.html中输入用户名和口令等,然后提交给display. jsp页面,在该页面中通过JavaBeans保存数据并输出。

【步骤1】创建UserBean.java,包含username, password, email三个私有数据成员和相应的访问器和设置器。

package exp03;

public class UserBean {
    private String userName;
    private String password;
    private String email;

    public UserBean() {}
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

【步骤2】编写登录页面login.html,部分代码如下,补充关键代码:

<html>

<body>

Please input:<br>

<form action=                 >

UserName:<input type="text" name="username"><br>

Password:<input type="password" name="password"><br>

Email:<input type="text"name="email"><br>

<input type="submit" value="提交">

</form>

</body>

</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>用户登录页面</title>
</head>
<body>
<form action="checklogin.jsp" method="post">
    <table>
        <tr>
            <td>
                用户名:
            </td>
            <td>
                <input type="text" name="userId" />
            </td>
        </tr>
        <tr>
            <td>
                密 码:
            </td>
            <td>
                <input type="password" name="password" />
            </td>
        </tr>
        <tr>
            <td>
                <input type="submit" value="登录" />
            </td>
        </tr>
    </table>
</form>
</body>
</html>

【步骤3】编写display.jsp页面,使用JavaBeans显示输入的信息,部分代码如下,补充关键代码:

<%@ page import="com.beans.UserBean" %>

                                            

                                            

<html>

<body>

   UserName:                                        <br>

   Password:                                         <br>

   Email:                                            <br>

</body>

</html>

<%@ page language="java" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8"%>
<jsp:useBean id="user" class="exp03.UserBean">
    <jsp:setProperty name="user" property="*"/>
</jsp:useBean>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
</head>
<body>
UserName:<%=user.getUserName() %> <br/>
Password:<%=user.getPassword() %>  <br/>
Email:<%=user.getEmail() %> <br/>
</body>
</html>

4. 使用JavaBean构造一个简单的计算器,能够进行“+、—、*、/”运算。

【步骤1】编写实现简单计算器的JavaBean:SimpleCalculator.java,包含first、second、operator、result四个成员变量和相应的访问器与设置器,一个calculator方法根据运算符获取运算结果。

package exp03;
public class SimpleCalculator {

    private float first;
    private float second;
    private String  operator;
    private float result;

    public SimpleCalculator() {}

    public float getFirst() {
        return first;
    }

    public void setFirst(float first) {
        this.first = first;
    }

    public float getSecond() {
        return second;
    }

    public void setSecond(float second) {
        this.second = second;
    }

    public String getOperator() {
        return operator;
    }

    public void setOperator(String operator) {
        this.operator = operator;
    }
    public float calculate(float first,float second,String operator)
    {
        switch(operator)
        {
            case "+": result=first+second;break;
            case "-": result=first-second;break;
            case "*": result=first*second;break;
            case "/": result=first/second;break;
            default: ;break;
        }
        return result;
    }

}

【步骤2】编写calculate.jsp页面,用户通过表单输入两个操作数和运算符,调用该页面自身处理该表单,通过调用SimpleCalculator类的实例实现运算逻辑,并显示运算结果。

<%@ page language="java" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8"%>
<jsp:useBean id="calculator" class="exp03.SimpleCalculator">
    <jsp:setProperty name="calculator" property="*"/>
</jsp:useBean>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>计算</title>

</head>
<body>
<%
    try
    {
        float first=calculator.getFirst();
        float second=calculator.getSecond();
        String  op=calculator.getOperator();
        out.print("计算结果为:"+calculator.getFirst()+calculator.getOperator()+calculator.getSecond()+"="
                +calculator.calculate(first, second, op));
    }catch(Exception e)
    {
        e.printStackTrace();

    }

%>
<br/>
<form action="calculate.jsp" method="post">
    第一个操作数:<input type="text" name="first">
    第二个操作数:<input type="text" name="second"><br/>
    <select name="operator">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
    </select>
    <input type="submit" value="计算" >
</form>
</body>
</html>

四、思考题

1. 什么是Model 1体系结构,有何缺点?

Model 1体系每个请求的目标都是jsp页面。Jsp页面负责完成所有任务并将响应发送给客户

缺点:(1) 特需要将大量的Java代码的业务逻辑嵌入到jsp页面中;(2)不能提高组建的重用性。

2. 什么是MVC设计模式?其优点是什么?

将web应用组件分成模型、控制器、视图三部分,每种组件完成各自的任务,该结构的所有请求目标都是servlet,充当控制器,servlet分析请求并将所需要的数据收集到JavaBean对象,该对象作为模型,最后servlet将请求转发到jsp,有jsp调用JavaBean中的数据并产生响应。

3. 实现MVC设计模式的一般步骤是什么?

(1)定义JavaBeans存储数据;

(2)使用Servlet处理请求;

(3)结果与存储;

(4)转发请求到JSP页面;

(5)从JavaBeans对象中提取数据。

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

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

相关文章

【Python游戏】坦克大战、推箱子小游戏怎么玩?学会这些让你秒变高高手—那些童年的游戏还记得吗?(附Pygame合集源码)

前言 下一个青年节快到了&#xff0c;想小编我也是过不了几年节日了呢&#xff01;&#xff01; 社交媒体上流传着一张照片——按照国家规定“14岁到28岁今天都应该放半天假&#xff01;”不得不说&#xff0c; 这个跨度着实有点儿大&#xff0c;如果按整自然年来算年龄&…

Spark 连接 Hive

目录 导包 修改配置文件 修改hive-site.xml文件 启动hadoop 启动hive 启动spark 测试 查看表 导包 spark连接hive需要六个关键的jar包&#xff0c;以及将hive的配置文件hive-site.xml拷贝到spark的conf目录下。如果你hive配置没问题的话&#xff0c;这些jar都在hive的目…

Spring Security实战(四)—— 会话管理

目录 一、理解会话 二、防御会话固定攻击 三、会话过期 四、会话并发控制 五、集群会话的缺陷 六、集群会话的解决方案 七、整合Spring Session解决集群会话问题 只需在两个浏览器中用同一个账号登录就会发现&#xff0c;系统并没有任何会话并发限制。一个账号可以多处同…

cuSPARSE官方程序示例

cuSPARSE Library 简介 这个文件演示了cuSPARSE通用API的用法 官方程序&#xff1a;后续会出解析&#xff08;20230410&#xff09; cuSPARSE Generic APIs Documentation cuSPARSE Samples 向量 - 向量 操作矩阵 - 向量 操作矩阵 - 矩阵操作转换Legacy APIs优化稀疏迭代…

阿里本地生活再出发:口碑入高德,备战美团、抖音

配图来自Canva可画 近日&#xff0c;有传言称高德地图将和阿里本地生活旗下的到店业务口碑正式合并&#xff0c;未来阿里旗下所有的本地生活到店业务都将统一整合在高德地图的入口中。3月22日&#xff0c;高德地图正式确认了此事&#xff0c;并表示高德地图作为“出门好生活开…

网络软件-管理网络设备和组件

网络软件是一个术语&#xff0c;表示帮助网络管理员轻松执行特定操作的任何网络软件。术语“网络软件”可以包括广泛的软件解决方案&#xff0c;每个解决方案都提供特定的功能&#xff0c;共同帮助网络管理员完全控制其IT基础架构。网络软件工具提供监控网络运行状况、测量性能…

一个简单的MUX-VLAN实验(华为eNSP模拟器)

MUX-VLAN产生背景及用途 在数据中心网络中&#xff0c;数据中心管理员希望数据中心内部所有服务器&#xff08;或终端&#xff09;都可以访问外部网络&#xff0c;同时部分服务器之间可以互相通信&#xff0c;部分服务器之间相互隔离。一般情况下&#xff0c;为了实现所有服…

python贪吃蛇代码

文末用python写好了贪吃蛇代码可直接复制使用&#xff01; 今天和大家分享一下贪吃蛇的代码&#xff0c;主要是贪吃蛇的一些基本知识&#xff0c;以及怎么去玩。 首先&#xff0c;我们先了解一下什么是贪吃蛇&#xff1f;它是一个具有多种功能的游戏&#xff0c;可以通过点击屏…

绿联dx4600砖机救援

由于在操作ssh过程不当&#xff0c;导致成为搬砖&#xff0c;记录一下救援过程 涉及到拆机&#xff0c;会导致损保&#xff0c;建议邮寄官方救援 变砖前因&#xff1a; 发现可以使用opkg&#xff0c;遂用opkg进行安装包的操作&#xff0c;最后更新busy-box&#xff0c;而进行b…

Vue源码解析(尚硅谷)

视频地址&#xff1a;Vue源码解析系列课程 一、Vue源码解析之mustache模板引擎 1. 什么是模板引擎 模板引擎是将数据要变为视图最优雅的解决方案 历史上曾经出现的数据变为视图的方法 2. mustache基本使用 mustache库简介 mustache库基本使用 3. mustache的底层核心机理…

3.7.2数据库系统-数据库控制技术:数据库的安全性、数据库备份与恢复技术、数据备份、数据库故障与恢复、数据库性能优化

3.7.2数据库系统-数据库控制技术&#xff1a;数据库的安全性、数据库备份与恢复技术、数据备份、数据库故障与恢复、数据库性能优化数据库的安全性数据库备份与恢复技术数据备份数据库故障与恢复数据库性能优化数据库的安全性 在做信息系统开发的过程当中&#xff0c;数据库是…

集合的线程安全解读

目录 集合操作 Demo Vector Collections CopyOnWriteArrayList(重点) “动态数组”机制 “线程安全”机制 集合操作 Demo NotSafeDemo public class NotSafeDemo {/*** 多个线程同时对集合进行修改* param args*/public static void main(String[] args) {List list ne…

100Wqps异地多活,得物是怎么架构的?

说在前面 在40岁老架构师尼恩的数千读者群中&#xff0c;一直在指导大家简历和职业升级&#xff0c;前几天&#xff0c;指导了一个华为老伙伴的简历&#xff0c;小伙伴的优势在异地多活&#xff0c;但是在简历指导的过程中&#xff0c;尼恩发现&#xff1a; 异地多活的概念、异…

大专毕业该怎么办?

大专学历转IT拿10k&#xff01;谁说生活不能是热血漫&#xff1f; “本科生讨论孔乙己的长衫&#xff0c;我们专科生怎么办&#xff1f;” “专科生的唯一出路难道就是进厂吗&#xff1f;” 在如今的就业内卷浪潮中&#xff0c;专科生的处境是最为尴尬的。一方面&#xff0c;很…

黑马在线教育数仓实战5

5. 意向用户主题看板_全量流程 5.1 需求分析 主要分析什么内容: 1) 每一个需求涉及到那些维度, 那些直白 2) 每一个需求涉及到那些表, 表的字段 3) 找出需要进行清洗 转换的操作 4) 如果表涉及到多表, 需要找到表与表关联条件 需求一: 计期内&#xff0c;新增…

国货之光!打工人必装的8个软件,你都用过没?|办公|效率|创作

给大家分享8款非常强大&#xff0c;但知名度不高的国产软件&#xff0c;每一个都堪称精品&#xff0c;喜欢的话记得点赞和关注哦~ 第一款是 火绒安全软件 火绒安全软件没有任何&#xff0c;具有推广性质的弹窗、没有捆绑打扰用户的行为&#xff1b;占用资源极少&#xff0c;&a…

Vue.js 2.0 表单控件绑定

基础用法 你可以用 ​v-model​ 指令在表单​ <input>​、​<textarea>​ 及 ​<select>​ 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇&#xff0c;但 ​v-model ​本质上不过是语法糖。它负责监听用户的输入事件…

商品库存管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87673672 更多系统资源库…

用户信息、账号设置。换做是你会怎么做代码实现?

在网站的应用场景下&#xff0c;对于用户的信息展示与账号设置的都是一个绕不过的问题。解决这个问题&#xff0c;最重要的是&#xff0c;怎么拦截未登录用户进入这个功能内&#xff1f;这就意味着必须在每次动态请求时&#xff0c;校验登录状态以及让请求持有用户&#xff08;…

零入门kubernetes网络实战-28->在同一个宿主机上基于虚拟网桥bridge链接同网段的不同网络命名空间的通信方案

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 1、测试环境介绍 一台centos虚拟机 # 查看操作系统版本 cat /etc/centos-release # 内核版本 uname -a uname -r # 查看网卡信息 ip a s eth02、网络拓…