web期末复习知识点

1.选择题

1.关于 B/S与 C/S模式的介绍正确的是( )。

A、B/S是浏览器/服务器模式,服务器装好后,用浏览器就可以正常浏览

B、C/S是客户端/服务端模式,服务器装好后,用浏览器就可以正常浏览

C、B/S是浏览器/服务器模式,服务器装好后,其他人还需要在客户端的计算机上安 装专用的客户端软件才能正常浏览

D、C/S是浏览器/服务器模式,服务器装好后,其他人还需要在客户端的计算机上安 装专用的客户端软件才能正常浏览

正确答案: A 

2.Web开发环境客户端所需具备的技能不包括( )。

A、HTML语言

B、CSS样式表

C、JavaScript脚本语言

D、Servlet技术

正确答案: D 

3.Web开发环境服务端所需具备的技能不包括( )。

A、JSP

B、Servlet技术

C、JavaScript脚本语言

D、Java语言

正确答案: C 

4.创建 Web应用程序的步骤正确的是( )。

A、创建 Web工程→创建 JSP页面→发布 Web工程→运行 JSP页面

B、创建 Web工程→创建 JSP页面→运行 JSP页面→发布 Web工程

C、创建 JSP页面→创建 Web工程→发布 Web工程→运行 JSP页面

D、创建 JSP页面→创建 Web工程→运行 JSP页面→发布 Web工程

正确答案: A 

5.关于 JSP页面中嵌入 Java代码的描述正确的是( )。

A、JSP页面只能嵌入 HTML代码,不能嵌入 Java代码

B、JSP页面中的 Java代码只能嵌入在“<%”与“%>”之间

C、JSP页面中的 Java代码只能嵌入在“<#”与“#>”之间

D、JSP页面中的任何地方都可以直接写 Java代码

正确答案: B 

6.关于 HTML语言的描述不正确的是( )。

A、HTML是一门用来制作网页的程序语言

B、HTML语言是一种标记语言,不需要编译,直接由浏览器执行

C、HTML语言大小写敏感,HTML与 html是不一样的

D、HTML文件必须使用 html或 htm为文件名后缀

正确答案: C 

7.关于 JavaScript的描述不正确的是( )。

A、与 HTML语言一样,无须编译,直接在浏览器中执行

B、基于客户端运行,无须服务端

C、是一种解释性的,轻量级的,基于对象的语言

D、与Java语言一样,需要编译为 class文件后才能执行

正确答案: D 

8.在 helloapp工程中有一个 hello.jsp,它的文件路径 WebContent/hello/hello.jsp,那么在浏览器端访问 hello.jsp的 URL是( )。

A、http://localhost:8080/hello.jsp

B、http://localhost:8080/helloapp/hello.jsp

C、http://localhost:8080/helloapp/hello/hello.jsp

D、http://localhost:8080/hello/hello.jsp

正确答案: C 


9.JSP页面是在传统的 HTML页面文件中加入 Java程序段和 JSP标签构成的,Java程序段写在( )标记符号之间。

A、<% %>           B、<- - - ->

C、<@ @>           D、<& &>

正确答案: A 

10.JSP指令标签包括 include指令,taglib指令和( )。

A、forward指令       B、useBean指令

C、page指令          D、param指令

正确答案: C 

11.以下JSP指令标签的书写中,正确的是( )。

A、<%!page 属性=!值! %>      B、<%@page 属性=!值! %>

C、<%#page 属性=! 值! %>     D、<%&page 属性=!值! %>

正确答案: B 我的答案:

12.page指令标签的属性中可以指定多个值的是( )。

A、contentType属性             B、language属性

C、import属性                   D、session属性

正确答案: C 

13.下面不是 useBean动作可能的属性值的是( )。

A、contentType         B、id

C、scope                D、class

正确答案: A 

14.在 JavaEE中,以下有关 jsp:setProperty和 jsp:getProperty标记的描述,正确的是( )。

A、和标记都必须在的开始标记和结束标记之间

B、这两个标记的 name属性的值必须和标记的 id属性的值相对应

C、和标记可以用于对 bean中定义的所有属性进行选择和设置

D、这两个标记的 name属性的值可以和标记的 id属性的值不同

正确答案: B 

15.在 JSP中如果要导入 java.io.*包,应该使用( )指令。

A、page      B、taglib

C、include     D、forward

正确答案: A 

16.page指令用于定义 JSP文件中的全局属性,下列关于该指令用法的描述错误的是 ( )。

A、<%@page%>作用于整个 JSP页面

B、可以在一个页面中使用多个<%@page%>指令

C、为增强程序的可读性,建议将<%@page%>指令放在 JSP文件的开头,但不是必需的

D、<%@page%>指令中的属性只能出现一次

正确答案: D 

17.以下( )注释可以被发送到客户端的浏览器。

A、<%--第一种 --%>       B、<% //第二种 %>

C、<% /*第三种 */%>   D、<!--第四种-->

正确答案: D 

18.Page指令的( )属性可以设置 JSP页面是否可多线程访问。

A、session                  B、buffer

C、isThreadSafe             D、info

正确答案: C 

19.可在 JSP页面出现该指令的位置处,静态插入一个文件( )。

A、page指令标签          B、page指令的 import属性

C、include指令标签         D、include动作标签

正确答案: C 

20.Page指令的作用是( )。

A、用来定义整个 JSP页面的一些属性和这些属性的值

B、用来在 JSP页面内某处嵌入一个文件

C、使该 JSP页面动态包含一个文件

D、指示 JSP页面加载 Javaplugin

正确答案: A 

21.在 JSP中如果要导入 java.io.*包,应该使用( )指令。

A、page          B、taglib

C、include        D、forward

正确答案: A 

22.如果当前 JSP页面出现异常时需要转到一个异常页,需要设置 page指令的( ) 属性。

A、Exception      B、isErrorPage

C、error           D、errorPage

正确答案: D 

23.在 JSP中的 Java脚本中输出数据时可以使用( )对象的 print()方法。

A、page           B、session

C、out             D、application

正确答案: C 

24.下列关于 JSTL中条件标签说法错误的是( )。

A、可以实现如 if else的条件语句

B、标签用于条件选择

C、标签代表一个条件分支

D、标签代表的最后选择

正确答案: C 

25.JSP Model2开发的系统中,实现视图的是( )

A、JSP             B、HTML

C、JavaBean        D、Servlet

我的答案:A

26.MVC模式中用于负责与用户交互并展示模型中数据的模块是( )

A、模型(Model)          B、表示层(View)

C、视图(View)            D、控制器(Controller)

我的答案:C

27.阅读下面的类:
public class Book {
private double price;
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
针对以上类,下列说法正确的是( )

A、符合JavaBean规范           B、不符合JavaBean规范

C、没有构造方法,所以不符合JavaBean规范        D、以上说法都不对

我的答案:A

28.下面关于MVC设计模式的特点描述中,错误的是( )

A、有利于开发中的分工             B、使程序结构的耦合性增强

C、有利于组件的重用               D、MVC设计模式是当前主流的设计模式之一

我的答案:B

29.在JSP Model2模型中,接收浏览器请求的是( )

A、JSP      B、JS     C、Servlet         D、JavaBean

我的答案:C

2.jsp页面

1.jsp页面元素

jsp页面主要包含五个元素,JSP 指令元素,JSP 脚本元素,JSP 动作元素、jsp内置对象和注释

2.jsp指令元素

page(<%@ page ...%>):用于定义JSP页面的各种属性,是最复杂的一个指令,它的属性很多,常用的属性有import、language、pageEncoding等。

include(<%@ include file="..." %>):静态包含指令用于引入其他JSP文件,使用include指令引入的其他JSP文件,JSP引擎将把这两个JSP文件翻译成一个servlet,所以将include称为静态包含。

taglib(<%@ taglib uri="tagLibraryURI" | prefix="tagPrefix" %>):用于在JSP页面中导入标签库(JSP标准标签库第三方标签库自定义标签库)。

3.jsp脚本元素

表达式(<%= ... %>):用于向页面输出Java的值。
脚本(<% ... %>):可以写任何Java代码,通常用于控制逻辑。
声明(<%! ... %>):可以声明字段和方法,但在JSP中通常不这么用。

4.jsp常用的六个动作元素

<jsp:include>:这个动作标签可以将另一个文件的内容包含到当前的JSP页面内。被包含的文件内容可以是静态文本也可以是动态代码。

<jsp:forward>:是请求转发标签。该标签可以将当前页面的请求转发给其他Web资源。

<jsp:param>:该标签可以作为其他标签的子标签,为其他标签传递参数

                         <jsp:param name="paramName"value="paramValue" />

                         name:指定参数的名称

                         value:设置对应的参数值

<jsp:useBean>: 用于在JSP页面中创建一个JavaBean实例,并通过属性的设置将此实例存放在JSP指定范围内 

<jsp:setProperty>:用于对JavaBean中的属性赋值,但JavaBean的属性要提供相应的setXXX()方法。通常与<jsp:useBean>标签一起使用

<jsp:getProperty>:用于获取JavaBean中的属性值,但要求JavaBean的属性必须具有相应getXXX()方法。

5.jsp内置对象

request对象:封装客户端的请求

response对象:封装服务端向客户端发送的响应

session对象:封装用户会话的对象

application对象:封装服务器运行环境的对象

out对象:输出服务器响应的输出流对象

exception:封装页面抛出异常的对象

page:jsp页面本身

pageContext:通过该对象获取其他对象

config:web应用配置对象

6jsp注释

HTML注释(输出注释):指在客户端查看源代码时能看见注释,<!--要注释的内容-->。

JSP页注释(隐藏注释):指注释虽然写在JSP程序中,但不会发送给客户,因此在客户端查看源代码时不能看见注释,<%--要注释的内容--%>。

Java注释:只能出现在Java代码区中,不允许直接出现在页⾯中,//单⾏注释 ,/*多⾏注释*/。

3.Servlet

1.Servlet里的三个方法

1 init() 方法:在Servlet对象被创建时执行。该方法的作用是初始化Servlet,它只会被执行一次,并且在Servlet实例化之后立即执行。init() 方法通常用于加载配置文件、初始化数据库连接、获取服务器资源等操作。

2 service() 方法:每当有用户请求发生时,容器就会调用 service() 方法,并将请求传给该方法。该方法接受客户端请求并给出响应。在 service() 方法中,通常会根据不同的请求类型,调用不同的方法来处理请求,例如 doGet() 方法和 doPost() 方法。

3 destroy() 方法:当Servlet容器(例如Tomcat)重新加载或关闭Web应用程序时,容器将调用destroy()方法,在该方法中可以执行清理活动(例如关闭数据库连接)和显式释放在Servlet初始化期间分配的其他资源。该方法只会被执行一次, Servlet容器在运行时不会再次调用Servlet实例的service()/doGet()/doPost()等方法。

2.示例

package servlet;

import Dao.userDao;
import model.userinfo;

/**
 * 登录验证
 * */

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/*设置访问路径*/
@WebServlet("/login.do")
/*一个类继承HttpServlet*/
public class loginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*获取用户名和密码*/
        String username=req.getParameter("username");
        String password=req.getParameter("password");
        /*调用控制层*/
        userDao userdao=new userDao();
        userinfo user=userdao.findByUsername(username,password);
        if(user!=null){
            /*登陆成功,转发到管理员界面*/
            if(user.getRole()==1)
                resp.sendRedirect(req.getContextPath()+"/MainInterface.jsp");
                /*登陆成功,转发到用户界面*/
            else{
                resp.sendRedirect(req.getContextPath()+"/MainInterfaceUser.jsp");
            }
        }
        else{
            /*登陆失败,重定向到失败页面*/
            resp.sendRedirect("loginjsp/loginFill.jsp");
        }
    }
}

4.El表达式和JSTL标签库

1.EL表达式

语法:${表达式}

示例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>  
<html>  
<head>  
    <title>EL Expression Example</title>  
</head>  
<body>  
    <%  
        String username = "Alice";  
        pageContext.setAttribute("username", username);  
    %>  
    <p>Hello, ${username}!</p>  
</body>  
</html>
2.JSTL标签库
  1. 核心标签库(Core Tag Library)
    • URI: http://java.sun.com/jsp/jstl/core
    • 前缀: 通常使用 c
    • 功能: 包括控制流标签(如<c:if><c:choose><c:when><c:otherwise>)、迭代标签(如<c:forEach><c:forTokens>)、URL处理标签(如<c:url><c:import><c:redirect>)等。
  2. 格式化标签库(Formatting Tag Library)
    • URI: http://java.sun.com/jsp/jstl/fmt
    • 前缀: 通常使用 fmt
    • 功能: 提供国际化(i18n)和本地化(l10n)支持,包括消息格式化、数字和日期格式化等。
  3. SQL标签库(SQL Tag Library)
    • URI: http://java.sun.com/jsp/jstl/sql
    • 前缀: 通常使用 sql
    • 功能: 提供与数据库交互的标签,包括查询、更新和事务管理等。但请注意,直接在JSP页面中使用SQL代码通常不是最佳实践,因为它可能导致代码难以维护和安全风险。
  4. XML标签库(XML Tag Library)
    • URI: http://java.sun.com/jsp/jstl/xml
    • 前缀: 通常使用 x
    • 功能: 提供处理XML文档的标签,如解析XML、转换XML到HTML等。
  5. 函数标签库(Functions Tag Library)
    • URI: http://java.sun.com/jsp/jstl/functions
    • 前缀: 通常使用 fn
    • 功能: 提供一组常用的EL函数,可以在EL表达式中直接调用。

5.JDBC编程

1.编程步骤

加载驱动程序

建立连接

创建Statement对象

执行SQL语句

处理查询结果集

释放资源

示例:

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
import java.sql.Statement;  
  
public class JdbcExample {  
    public static void main(String[] args) {  
        // JDBC驱动名称和数据库URL  
        String jdbcDriver = "com.mysql.cj.jdbc.Driver";  
        String dbUrl = "jdbc:mysql://localhost:3306/mydatabase";  
  
        // 数据库的用户名与密码  
        String username = "root";  
        String password = "password";  
  
        try {  
            // 1. 加载JDBC驱动  
            Class.forName(jdbcDriver);  
  
            // 2. 建立数据库连接  
            System.out.println("Connecting to database...");  
            Connection conn = DriverManager.getConnection(dbUrl, username, password);  
  
            // 3. 创建Statement对象  
            System.out.println("Creating statement...");  
            Statement stmt = conn.createStatement();  
  
            // 4. 执行SQL查询  
            String sql = "SELECT id, name, email FROM users";  
            ResultSet rs = stmt.executeQuery(sql);  
  
            // 5. 处理查询结果集  
            while(rs.next()){  
                // 通过列名检索  
                int id  = rs.getInt("id");  
                String name = rs.getString("name");  
                String email = rs.getString("email");  
  
                // 显示值  
                System.out.print("ID: " + id);  
                System.out.print(", Name: " + name);  
                System.out.println(", Email: " + email);  
            }  
  
            // 6. 释放资源  
            rs.close();  
            stmt.close();  
            conn.close();  
        } catch(SQLException se) {  
            // 处理JDBC错误  
            se.printStackTrace();  
        } catch(Exception e) {  
            // 处理Class.forName错误  
            e.printStackTrace();  
        } finally {  
            // 可以在这里添加最终需要执行的代码,比如关闭连接  
            // 注意:在finally块中关闭资源是一个好习惯,但上面的代码已经在try块中关闭了  
        }  
        System.out.println("Goodbye!");  
    }  
}
2.JDBC中使用PreparedStatement执行sql命令的好处

1提高程序性能:对于同一个PreparedStatement对象,如果要执行多次相似的SQL语句,只需要设置参数的不同值,就可以重复利用PreparedStatement对象,这样可以显著提高程序性能。

2 避免SQL注入:使用PreparedStatement可以有效地避免SQL注入攻击,因为PreparedStatement在执行SQL语句前会对输入参数进行处理,它会自动转义掉特殊字符,防止恶意用户在输入参数中插入恶意代码。

3 提高代码可读性:在使用PreparedStatement时,参数直接在SQL语句中使用问号占位符表示,这样可以使代码更加简洁、易读。在代码阅读和维护时,也更容易理解SQL操作的含义。

4支持批处理操作:PreparedStatement支持批处理操作,可以一次性执行多个SQL语句,这样可以减少与数据库的交互次数,从而提高程序性能。

6.MVC三层架构

1.三层架构

模型(Model):模型代表应用程序的数据和业务逻辑。它负责处理数据的存储、检索、更新和验证,并提供一组接口供控制器访问和操作数据。

 视图(View):视图是用户界面的可视化展示。它负责呈现模型数据并向用户显示信息。视图通常是被动的,只负责显示数据,不处理业务逻辑。

 控制器(Controller):控制器接受用户的输入和命令,并根据用户的操作调用模型和视图进行相应的处理。它负责协调模型和视图的交互,并根据业务逻辑处理用户的请求。

2.jsp Model1:jsp+javaBean

3。jsp Model2:jsp+Servlet+javaBeasn

其中JSP技术:用于实现视图(View)模块。视图生成最终的HTML、CSS、JavaScript等静态文件,将控制器返回的数据展示给用户。

Servlet技术:用于实现控制器(Controller)模块。控制器接受客户端请求,处理请求,将结果传递给视图模块。

 JavaBean技术:用于实现模型(Model)模块。模型负责处理业务逻辑,与数据库交互,提供数据给控制器,控制器再将数据传递给视图

7.过滤器

使用场景
        权限控制:基于URL级别的权限访问控制,例如阻止未授权用户访问某些页面或资源。
        敏感词汇过滤:在请求的内容中搜索并过滤掉敏感词汇。
        日志记录:记录用户请求和响应的详细信息,用于监控和分析。
        压缩响应信息:对响应内容进行压缩,以减小传输的数据量,提高性能。

具体方法:doFilter()实现具体的逻辑

示例:

package filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.xml.crypto.dsig.spec.XPathType;
import java.io.IOException;
/*对所有路径进行过滤*/
@WebFilter("/*")
public class chatFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("过滤器1被创建了");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
        httpRequest.setCharacterEncoding("UTF-8");
        // 设置响应的字符编码
        servletResponse.setContentType("text/html;charset=UTF-8");
        // 继续处理请求
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {
        System.out.println("过滤器1被销毁了");
    }
}

8.监听器

1.ServletContextListener:监听ServletContext对象的创建和销毁事件。
        当Web应用程序启动时,Servlet容器会调用contextInitialized(ServletContextEvent sce)方法。
        当Web应用程序停止时,Servlet容器会调用contextDestroyed(ServletContextEvent sce)方法。
2.HttpSessionListener:监听HttpSession对象的创建和销毁事件。
        当用户首次与Web应用程序交互并创建一个新的会话时,Servlet容器会调用sessionCreated(HttpSessionEvent se)方法。
        当用户会话超时、用户关闭浏览器或调用invalidate()方法时,Servlet容器会调用3.sessionDestroyed(HttpSessionEvent se)方法:ServletRequestListener(不太常用,因为HttpServletRequest对象通常是短暂的):
        监听ServletRequest对象的创建和销毁事件。但请注意,由于HttpServletRequest对象通常是短暂的(与每个请求相关联),因此ServletRequestListener在实际应用中并不常用。

示例:

public class MyServletContextListener implements ServletContextListener {  
  
    @Override  
    public void contextInitialized(ServletContextEvent sce) {  
        // 在Web应用程序启动时执行的操作  
        System.out.println("Web应用程序已启动");  
    }  
  
    @Override  
    public void contextDestroyed(ServletContextEvent sce) {  
        // 在Web应用程序停止时执行的操作  
        System.out.println("Web应用程序已停止");  
    }  
}

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值