JavaWeb复习

  1. JavaBean的种类,作用;表单Bean的语法和对表单参数的收集过程;在内置对象的传递特点。
    表单bean:封装表单里的参数
    语法:
    1.包声明(必须把对应的字节码文件放在与对应的目录结构下WEB-INF下的class文件下)
    2.公有类且类名和文件名一致
    3.所有属性必须隐藏
    4.提供公有的访问属性的get,set方法
    5.一定要显式提供午无参的构造方法
    结果bean:封装外部的信息,主要是封装数据库的记录
    业务bean:完成对请求的操作
    持久bean:完成对外部数据(数据库,文件)操作的封装
  2. jsp:useBean, jsp:setProperty,jsp:getProperty标签的语法和执行过程。

jsp:useBean标签属性(用于在指定的域范围内,查找指定名称的JavaBean对象)
属性值 说明
Id Bean的变量名,可以在指定的范围中使用该变量名
Class Bean的路径名,必须是严格的package.class,不能指定其父类
scope Bean的有效范围,取值有page,request,session,application
beanName 实例化的类名称或序列化模板的名称,指定的名称可以为其接口,父类
type 指定父类或者接口的类型

执行过程:jsp:useBean首先尝试寻找已经存在的具有相同id和scope的JavaBean实例,如果没有就自动创建一个这样的实例。

jsp:setProperty标签属性(设置和访问JavaBean对象的属性)
属性值 说明
Name bean的名字,用来指定被使用的bean,它的值必须是jsp:useBean的id值
Propety bean的属性名,将值赋给bean类属性
Value 要设定的属性值
Param 表单参数名字

执行过程:使用Bean给定的setPropertyName方法,在Bean中设置一个或多个属性值。在使用这个元素之前必须使用jsp:useBean声明此Bean。

jsp:getProperty标签属性(读取JavaBean对象的属性)
属性值 说明
Name bean的名字,用来指定被使用的bean,它的值必须是jsp:useBean的id值
Propety bean的属性名

执行过程:使用Bean给定的getPropertyName方法,获取指定的JavaBean对象的属性值

<%@ page language=“java” contentType=“text/html; charset=utf-8” pageEncoding=“utf-8”%>
<%
request.setCharacterEncoding(“utf-8”);
%>

Insert title here 注册成功:

使用Bean的属性方法
用户名: <%=user.getUserName()%>
密码: <%=user.getPassword()%>
年龄: <%=user.getAge()%>

使用getProperty
用户名:
密码:
年龄:
客户端IP:<%=request.getRemoteAddr() %> 3. 转发(服务端跳转),重定向(客户端跳转)的含义及实现方法。 转发: 含义:服务器行为,在服务器内部跳转,浏览器地址栏地址路径不变 实现方法: 通过request对象获取请求转发器对象:RequestDispatcher,getRequestDispatcher(String path),然后使用RequestDispatcher对象来进行转发:forward(ServletRequest request,ServletRequest response) request.getRequestDispatcher(“xxx.jsp”).forward(request,response);

重定向:
含义:客户端行为,重定向是服务器通知浏览器去访问另一个地址,即再发出另一个请求。
实现方法:
1.response.sendRedirect()
2.<jsp:forward page=“”></jsp:forward>

  1. EL表达式的概念,语法,优点是什么?在MVC设计模式中如何取得关联属性?
    概念:EL(Expression Language)表达式就是表达式语言
    语法:${表达式}
    优点:

  2. 能够强制转换对象

  3. 对类型没有强制要求

  4. 使用简单
    如何取得关联属性(利用Java的反射机制):
    在EL中,对一个Bean的某字段进行引用,只需 ${bean.field},当然,这个bean是已经被set到容器中的。我们从容器中取出以bean为名字的Object,通过Java反射机制知道它的真实类型,然后通过field以javabean规范拼出方法名(首字母大写并加上get前缀),进行调用,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值。所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法。

  5. 内置对象有几种?作用和使用范围是什么?
    九种内置对象 作用 作用范围
    Request 接受通过HTTP协议传送到服务器的数据 一个存储数据的区域
    Response 服务器对客户端请求进行响应的内容 只在jsp页面内有效
    Session 保存用户的信息,跟踪用户的操作状态 在一次会话范围内有效
    Application 保存应用程序的上下文对象 整个上下文都有效
    Out 向客户端浏览器输出信息 页面执行期
    pageContext 保存当前也页面的对象 当前页面
    Config 保存服务器的配置信息 页面执行期
    Page 指向jsp页面本身 页面执行期
    Exception 页面发生异常,产生的异常对象 页面执行期

  6. servlet的概念、作用、语法、配置和并描述servlet的生命周期。
    概念:是遵循Java Servlet规范的Java类,由web服务器端的JVM执行,被用来扩展web服务器的功能,是在web服务器端的符合“请求-响应”访问模式的应用程序。
    作用:接受来自web浏览器或其他HTTP客户程序的请求,并将响应结果返回给客户端,通常用于在服务器端完成访问数据库、调用JavaBean等业务。
    语法:首先创建Servlet类,该类继承自javax.servlert.http.HttpServlet,类里覆写doGet() 和 doPost()方法,在web.xml文件中注册Servlet,这一注册工作也可由Servlet创建导向自动完成。
    配置:

    类名
    包名


    servlet程序名
    访问路径

    生命周期:
    加载和初始化阶段:
    当web服务器启动时,servlet容器首先到发布目录的WEB-INF下查找配置文 件web.xml。这个配置文件中有相关的servlet的配置信息,主要是定义servlet和定义servlet的代表这个应用在tomcat中的访问路径url请求映射。
    Servlet服务阶段:
    Servlet被初始化以后,该servlet实例就处于能响应请求的就绪状态,可以被服务器用来服务于客户端的请求并生成响应。当web服务期接受到浏览器的访问请求后,web服务器会调用该实例的service(servletRequest request,servletResponse response)方法,request对象和response对象由服务器创建并传给Servlet实例。Request对象封装了客户端发往服务器端的信息,response对象封装了服务器发往客户端的信息一个servlet实例可以同时满足多 个客户端请求,即servlce()方法运行在多线程的环境下。

  7. servlet如何获取和传递初始化参数?
    获取参数:使用request.getParamter(“请求参数名”)
    传递参数:
    request.setAttribute(“name”,value);
    request.getAttribute(“name”);

  8. servlet转到视图组件时,如何获取视图组件的路径?
    在转到视图组件时,请求发送到服务器端,利用过滤器,拦截视图组件的请求,在通过监听器将拦截到的视图组件的路径保存在监听域中。

  9. 说明servlet可获取哪些内置对象?如何获取?
    request、response、session、application
    request、response直接从传参中获得
    Session通过req.getSession();
    application通过servletContext

  10. 过滤器的概念作用以及编码过滤器,请求验证过滤器的语法和配置和拦截过程。
    概念:过滤器位于客户端和web应用程序之间,用于检查和修改两者之间流过的请求;
    在请求到达Servlet/JSP之前,过滤器截获请求;
    作用:在客户端的请求访问后端资源之前,拦截这些请求(添加处理)
    编码过滤器:
    语法:

package com.rt.demo.testServlet;
import java.io.;
import javax.servlet.
;
import javax.servlet.http.*;

public class FilterDemo implements Filter //继承于Filter接口
{
private String charSet;
public void init(FilterConfig config)
{
//从web.xml得到初始化参数
this.charSet = config.getInitParameter(“charSet”);
}

public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
throws IOException,ServletException
{
	//System.out.println("执行doFilter");
	request.setCharacterEncoding(this.charSet);
	chain.doFilter(request, response);
}

public void	destroy()
{
}

}
配置:


filterEncoding
com.rt.demo.testServlet.FilterDemo

charSet
GBK



filterEncoding
/

拦截过程:
请求验证过滤器:
语法:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws ServletException, IOException {
//doFilter方法中的请求和响应对象都是ServletRequest,ServletResponse类型的,这里需要强转一下来获取
HttpServletRequest req = (HttpServletRequest) request;
String uri = req.getRequestURI();//返回除去host(域名或者ip)部分的路径
/
如果获取到的路径包含这以下几个:登录页面、登录的servlet、css样式、js代码、验证码实现类,
则不拦截放行,如果少了哪个的话,页面会显示不完整,过滤器就会把没有写到下面的资源给拦截了
*/
if(uri.contains(“login.jsp”) || uri.contains(“/LoginServlet”)
|| uri.contains(“/css/”) || uri.contains(“/image/”) || uri.contains(“/CheckCode”)){
//包含登录的资源
//放行
chain.doFilter(request, response);
}else {
//不包含
//说明请求的不是登录页面,此时要判断用户登没登陆来确定给不给他访问资源
Object user = req.getSession().getAttribute(“user”);//这里是登录返回过来的User实体类对象
if (user == null) {
//user为null说明没登陆
//要跳转到登录页面
}else {
//否则说明用户登录了
//放行
chain.doFilter(request, response);
}
}
}

配置:
拦截过程:

  1. 监听器的概念作用以及对application 内置对象和session内置对象的创建,销毁及属性的变化做监听的语法和配置。

  2. MVC设计模式概念,MVC设计模式的优点。
    概念:是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能的一种设计模式(M:Model V:View C:Controller)
    优点:
    1.低耦合性(视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。)
    2.高重复性和可适应性
    3.较低的生命周期成本
    4.快速的部署
    5.可维护性
    6.有利于软件工程化管理

  3. Java连接并访问数据库(JDBC)的步骤及每一步的含义。
    /*
    JDBC编程六步
    /
    import java.sql.
    ;

public class JDBCTest01{
public static void main(String[] args){
Statement stmt = null;
Connection connect = null;
try{
//1、注册驱动
Driver driver = new com.mysql.jdbc.Driver();//多态,父类型引用指向子类型对象
DriverManager.registerDriver(driver);

		//2、获取连接
		String url = "jdbc:mysql://127.0.0.1:3306/bjpowernode";
		String user = "root";
		String passward = "hqw147258369";
		connect = DriverManager.getConnection(url,user,passward);
		System.out.println("数据库连接对象 = "+connect);
	
		//3、获取数据库操作对象
		stmt = connect.createStatement();

		//4、执行sql
		int count = stmt.executeUpdate("insert into dept(deptno,dname,loc) 
                                       values (50,'rengshibu','beijing')");
		System.out.println(count == 1?"保存成功":"保存失败");

		//5、处理查询结果

	}catch(SQLException e){
		e.printStackTrace();
	}finally{
		//6、释放资源
		if(stmt !=null){
			try{
				stmt.close();
			}catch(SQLException e){
				e.printStackTrace();
			}
		}
		if(connect !=null){
			try{
				connect.close();
			}catch(SQLException e){
				e.printStackTrace();
			}	
		}
	}
}

}
14. mysql如何通过字符界面方式创建数据库?
1.先登录到数据库
mysql -u 用户名 -p 密码
2.输入命令:
mysql> create database 数据库名字
15. 理解数据库连接池的原理,连接池管理策略和工作过程
原理:
● 连接池的建立
● 连接池中连接的使用管理
● 连接池的关闭
连接池管理策略:
当客户请求数据库连接时,
1)如果池中有空闲连接可用,返回该连接。
2)如果没有空闲连接,池中连接都已用完,创建一个新连接添加到池中。
3)如果池中连接已达到最大连接数,请求按设定的最大等待时间进入等待队列直到有空闲连接可用。
4)如果超出最大等待时间,则抛出异常给客户。
当客户释放数据库连接时,先判断该连接的引用次数是否超过了规定值,如果超过就从连接池中删除该连接,否则保留为其他客户服务。
该策略保证了数据库连接的有效复用,避免频繁的建立、释放连接所带来的系统资源开销。
如果连接长时间空闲,或检测到与服务器的连接已断开,连接池管理器也会将该连接从池中移除。
工作过程:
持久层向连接池申请一个链接。连接池返回一个空闲连接,如果没有空闲连接,那就检查连接池中的连接数量是否到达最大连接数量。如果没有到达最大连接数,则建立新的连接对象放入连接池中。如果连接池最大连接数量,那么用户就需要等待。这是可以设置最大等待时间来控制用户的等待状态。等待时间内,有别的连接对象释放,那么就分配等待用户。如果超时就返回null。

(题型:选择、填空、判断、简答、编程)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值