Web实验三 Web组件重用与JavaBeans

一、实验预习内容

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。

二.实验内容及要求

1.include静态指令的使用。

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

方法二:通过pageContext作用域属性,在主页面和子页面间共享userName的值,降低主页面和子页面的依赖性。
在这里插入图片描述
效果如下:
在这里插入图片描述

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

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

在这里插入图片描述

Subpage.jsp:
在这里插入图片描述
在这里插入图片描述

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

从HTML页面login.html中输入用户名和口令等,然后提交给display. jsp页面,在该页面中通过JavaBeans保存数据并输出。
【步骤1】创建UserBean.java,包含username, password, email三个私有数据成员和相应的访问器和设置器。

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;
    }
    public UserBean(String username,String password,String email){
        this.username=username;
        this.password=password;
        this.email=email;
    }
}

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

<html>
<body>
Please input:<br>
<form action="display.jsp" method="post">
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>

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

<%@ page import="com.beans.UserBean" %>
   <jsp:useBean id="user" class= "UserBean"> 
     <jsp:setProperty name="user" property="*"/>       
</jsp:useBean>    
<html>
<body>
   UserName:<jsp:getProperty name="user" property="username"/>                                      <br>
   Password:<jsp:getProperty name="user" property="password"/>                                      <br>
   Email:<jsp:getProperty name="user" property="email"/>                                          <br>
</body>
</html>

在这里插入图片描述

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

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

public class SimpleCalculator {
    private float first;
    private float second;
    private String operator;
    private float result;

    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 getResult() {
        return result;
    }

    public void setResult(float result) {
        this.result = result;
    }

    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;
    }
    public SimpleCalculator(float first,float second,String operator,float result){
        this.first=first;
        this.second=second;
        this.operator=operator;
        this.result=result;
    }
}

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

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="cal" class= "beans.SimpleCalculator" >
    <jsp:setProperty name="cal" property="*"/>
</jsp:useBean>
<!DOCTYPE html>
<html>
<head>
    <title>calculate</title>
</head>
<body>
<form action="calculate.jsp" method="post">
    <input type="text" name="first">
    <select name="operate">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
    </select>
    <input type="text" name="second">=
    <%
        try{
            float first= cal.getFirst();
            float second= cal.getSecond();
            String op = cal.getOperator();
            float result= cal.calculate(first,second,op);
            out.print(result);
        }catch (Exception e){
            e.printStackTrace();
        }
    %>
    <br>
    <input type="submit" value="提交">
</form>
</body>
</html>

在这里插入图片描述

三.思考题

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

答:model1体系每个请求的目标都是jsp页面。Jsp页面负责完成所有任务并将响应发送给客户。缺点:①特需要将大量的Java代码的业务逻辑嵌入到jsp页面中;②不能提高组件的可重用性。

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

答:mvc是一种设计模式(设计模式就是日常开发中编写代码的一种好的方法和经验的总结)。模型(model)-视图(view)-控制器(controller),三层架构的设计模式。用于实现前端页面的展现与后端业务数据处理的分离。

mvc设计模式的好处

1 分层设计,实现了业务系统各个组件之间的解耦,有利于业务系统的可扩展性,可维护性。
2 有利于系统的并行开发,提升开发效率。

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

答:(1)定义JavaBeans存储数据;
(2)使用Servlet处理请求;
(3)结果与存储;
(4)转发请求到JSP页面;
(5)从JavaBeans对象中提取数据。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值