《web应用技术》第一次课后作业

1.下载安装相关软件

1.JDK

 2.TOMCAT

 

对运行中的乱码进行修改:

运行成功:

 3.IDEA

2.学会用记事本编写jsp文件,并放进tomcat的相关目录下,运行。

 

 3.学会在IDEA编辑器中新建java web项目,并配置tomcat,运行jsp页面。

遇到8080端口被占用的情况后:

1.win+R然后输入CMD在命令行中输入netstat -ano | findstr "8080"查看占用8080端口的PID

 2.在任务管理器中输入PID查看占用端口号的程序

 3.输入taskkill /pid 端口号 /f结束占用端口号的进程

4.自学IDEA的各种使用技巧。

1.对jsp文件修改后刷新能够直接呈现最新的jsp界面

2.设置上下文根,访问的网址

5.jsp编程练习:

(1)用JSP实现用户获取用户输入的操作。(仿教材例5-5)

1.input.jsp

input.jsp页面主要是应用html编写网页,创建一个form表单,在表单中分别加入文本框、单选按钮、复选框。

<%--
  Created by IntelliJ IDEA.
  User: 刘小灿
  Date: 2024/4/1
  Time: 21:18
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>练习1</title>
</head>
<body>
<form action="output.jsp" method="post">
    <table border="1px solid" frame="void">
        <tr>
            <td>
                姓名:
            </td>
            <td>
                <input type="text" name="name">
            </td>
        </tr>
        <tr>
            <td>
                性别:
            </td>
            <td>
                <input type="radio" name="sex" value="男">男
                <input type="radio" name="sex" value="女">女
            </td>
        </tr>
        <tr>
            <td>
                爱好:
            </td>
            <td>
                <div>
                    <input type="checkbox" name="like" value="篮球">篮球
                    <input type="checkbox" name="like" value="旅游">旅游
                    <input type="checkbox" name="like" value="音乐">音乐
                    <input type="checkbox" name="like" value="摄影">摄影
                </div>
            </td>
        </tr>
        <tr>
            <td>
                E-mail:
            </td>
            <td>
                <input type="text" name="E-mail">
            </td>
        </tr>
        <tr>
            <td>

            </td>
            <td>
                <input type="submit" value="Submit">
                <input type="reset" value="全部重写">
            </td>
        </tr>
    </table>
</form>
</body>
</html>

点击“全部重写”按钮后将清空全部内容:

点击submit按钮后将跳转到output.jsp页面:

 

2.output.jsp

对于文本元素、单选按钮利用getParameter()方法来获取具体的值,对于复选框要使用getParameterValues()方法来获取一个字符串数组。通过循环遍历这个数组得到用户选定的所有内容。

<%@ page import="java.nio.charset.StandardCharsets" %><%--
  Created by IntelliJ IDEA.
  User: 刘小灿
  Date: 2024/4/1
  Time: 21:24
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<head>
    <title>练习2</title>
</head>
<body>
<table border="1px solid" frame="void">
    <tr>
        <td>
            姓名:
        </td>
        <td>
            <%=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")%>
        </td>
    </tr>
    <tr>
        <td>
            性别:
        </td>
        <td>
            <%=new String(request.getParameter("sex").getBytes("ISO-8859-1"),"UTF-8")%>
        </td>
    </tr>
    <tr>
        <td>
            爱好:
        </td>
        <td>
            <%
                String []like= request.getParameterValues("like");
                for(int i=0;i< like.length;i++){
            %>
            <%=new String(like[i].getBytes("ISO-8859-1"),"UTF-8")+"&nbsp;"%>
            <%
                }
            %>
        </td>
    </tr>
    <tr>
        <td>
            E-mail:
        </td>
        <td>
            <%=new String(request.getParameter("E-mail").getBytes("ISO-8859-1"),"UTF-8")%>
        </td>
    </tr>

</table>
</body>
</html>

 (2)用JSP实现用户登录验证的功能。

  • 如果用户输入正确的账号密码,则提示问候语句;如果用户输入错误的账号密码,则提示账号密码有误。

提供的用户数据为:

利用request的方法获取用户输入的数据,将用户输入的数据与现存的数据进行对照,如果满足账号和密码则登录成功,如果不满足则弹出失败提示。 

<%--
  Created by IntelliJ IDEA.
  User: 刘小灿
  Date: 2024/4/4
  Time: 21:20
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
        String username = request.getParameter("UserName");
        String password = request.getParameter("UserPassword");
        if(username!=null){
            if(username.equals("2367498567")&&password.equals("123456")){
                out.println("您好,张三!");
            }
            if(username.equals("6734591234")&&password.equals("654321")){
                out.println("您好,李四!");
            }
            if (username.equals("4629001458")&&password.equals("zxcvbnm256")){
                out.println("您好,Tom!");
            }
            else{
                out.println("您输入的账号密码有误,请重新输入!");
            }
        }
        else{
            out.println("请输入账号!");
        }
%>

</body>
</html>

成功登录时,页面最上端会显示是否登录成功,弹出相应的文本,如“您好,Tom!”

登录失败时,将会显示“您输入的账号密码有误,请重新输入!”

  • 任意编写3-4个页面,为每个页面添加权限控制。如果用户已经登录,则在每个页面页首提示:欢迎你,**。如果没有登录跳转到这个页面,则提示:非法访问。

 1.编写第一个页面user2.jsp 页面主要内容为登录界面,同时在登录错误时接收error参数,若error值为true则提示用户重新登陆。

user2.jsp:

<%--
  Created by IntelliJ IDEA.
  User: 刘小灿
  Date: 2024/4/4
  Time: 22:51
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<head>
    <title>登陆界面</title>
</head>
<body>
<%
String error = request.getParameter("error");
if (error != null && error.equals("true")) {
out.println("<p style='color: red;'>用户名或密码错误,请重试。</p>");
}
%>
<form action="check.jsp" method="post">
    <ul style="list-style: none">
        <li>
            用户名:
            <input type="text" name="UserName" required>
        </li>
        <li>
            密码:
            <input type="password" name="UserPassword" required>
        </li>
        <li>
            <input type="submit" value="登录">
        </li>
    </ul>
</form>
</body>
</html>

 

 2.编写第二个页面check.jsp 页面主要用来检查用户输入的用户名和密码是否正确,如果正确则跳转到对应的页面,错误则重定向到user2.jsp页面并传递error参数。

check.jsp:

<%--
  Created by IntelliJ IDEA.
  User: 刘小灿
  Date: 2024/4/5
  Time: 11:03
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<head>
    <title>检查界面</title>
</head>
<body>
<%
    String name= request.getParameter("UserName");
    String password= request.getParameter("UserPassword");
    if (name.equals("Tom")&&password.equals("zxcvbnm256")){
        session.setAttribute("name",name);
        response.sendRedirect("successful111.jsp");
    }
    else{
        response.sendRedirect("user2.jsp?error=true");
    }
%>
</body>
</html>

 3.编写第三个页面successful.jsp 页面主要用来登陆成功后跳转,显示“您好!**”,但如果没有登录强制跳转到此界面则会显示“非正常登录”。

successful.jsp:

<%--
  Created by IntelliJ IDEA.
  User: 刘小灿
  Date: 2024/4/5
  Time: 11:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String name=(String)session.getAttribute("name");
    if(name!=null){
        out.println("您好!"+name);
    }
    else{
        out.println("您好!"+name);
        out.println("非正常登录");
    }
session.invalidate();
%>
</body>
</html>

 

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是大数据技术架构HDFS的课后作业: 1. 请简述HDFS的三种副本机制,并比较它们的优缺点。 答:HDFS的三种副本机制分别是简单复制、带宽限制复制和管道复制。 - 简单复制:将文件完整地复制到多个节点上,这样可以实现数据的冗余备份,提高数据的可靠性。优点是实现简单,但缺点是占用了大量的存储空间,且不便于数据的并发读写。 - 带宽限制复制:将文件分成若干个数据块,分别复制到不同的节点上,但每个节点只能复制一个数据块。这样可以实现数据的冗余备份,同时减少了副本之间的数据冲突。优点是节约存储空间,缺点是复制速度较慢。 - 管道复制:将文件分成若干个数据块,通过管道的方式依次传输到不同的节点上,每个节点只负责处理一部分数据块。这样可以实现数据的并发读写和冗余备份。优点是复制速度快,且占用的存储空间较少,但缺点是实现较为复杂。 2. 请简述HDFS的读写流程,并分别介绍读写操作的细节。 答:HDFS的读写流程分别如下: - 读流程:客户端向NameNode发起读请求,NameNode返回包含所需数据块的DataNode列表,客户端通过网络连接DataNode读取数据块,如果读取的数据块不完整,则继续向其他DataNode请求数据块,直到读取完整个文件。 - 写流程:客户端向NameNode发起写请求,NameNode返回包含新建文件所需数据块的DataNode列表,客户端通过网络连接DataNode写入数据块,每写完一个数据块,DataNode会将数据块复制到其他的DataNode上,以实现数据的冗余备份。 读操作的细节如下:客户端读取数据时,会根据数据块的大小进行分段读取,每个数据块的大小默认为128MB,如果读取的数据块不完整,则需要向其他DataNode请求数据块,这时读取的数据块会被缓存到客户端的本地磁盘中,以便后续读取。同时,HDFS还支持数据的压缩、加密等操作,以提高数据的传输效率和安全性。 写操作的细节如下:客户端写入数据时,会将数据分成若干个数据块,每个数据块的大小默认为128MB,然后将数据块依次写入DataNode中。每个DataNode会将写入的数据块进行复制,以实现数据的冗余备份。同时,HDFS还支持数据的压缩、加密等操作,以提高数据的传输效率和安全性。 3. 请简述HDFS的故障恢复机制,并介绍故障恢复的过程。 答:HDFS的故障恢复机制主要包括NameNode的故障恢复和DataNode的故障恢复。 - NameNode的故障恢复:如果NameNode发生故障,HDFS会切换到备用的NameNode上,进行故障恢复。此时,备用的NameNode会将元数据从Zookeeper中恢复,然后重新启动HDFS服务。在故障恢复期间,HDFS的读写操作将被暂停。 - DataNode的故障恢复:如果一个DataNode发生故障,HDFS会将该DataNode上的数据块复制到其他的DataNode上,以实现数据的冗余备份。如果某个数据块的所有副本都不可用,HDFS会将该数据块标记为损坏,并尝试从其他节点上复制数据块,以恢复数据的完整性。 故障恢复的过程如下:当NameNode或DataNode发生故障时,HDFS会将故障节点的状态标记为“不可用”,然后将该节点上的数据块复制到其他节点上,以实现数据的冗余备份。如果某个数据块的所有副本都不可用,HDFS会将该数据块标记为“损坏”,然后尝试从其他节点上复制数据块,以恢复数据的完整性。在故障恢复期间,HDFS的读写操作可能会受到一定的影响,但一般不会影响到整个HDFS系统的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值