- JavaBean的种类,作用;表单Bean的语法和对表单参数的收集过程;在内置对象的传递特点。
表单bean:封装表单里的参数
语法:
1.包声明(必须把对应的字节码文件放在与对应的目录结构下WEB-INF下的class文件下)
2.公有类且类名和文件名一致
3.所有属性必须隐藏
4.提供公有的访问属性的get,set方法
5.一定要显式提供午无参的构造方法
结果bean:封装外部的信息,主要是封装数据库的记录
业务bean:完成对请求的操作
持久bean:完成对外部数据(数据库,文件)操作的封装 - 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”);
%>
使用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>
-
EL表达式的概念,语法,优点是什么?在MVC设计模式中如何取得关联属性?
概念:EL(Expression Language)表达式就是表达式语言
语法:${表达式}
优点: -
能够强制转换对象
-
对类型没有强制要求
-
使用简单
如何取得关联属性(利用Java的反射机制):
在EL中,对一个Bean的某字段进行引用,只需 ${bean.field},当然,这个bean是已经被set到容器中的。我们从容器中取出以bean为名字的Object,通过Java反射机制知道它的真实类型,然后通过field以javabean规范拼出方法名(首字母大写并加上get前缀),进行调用,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值。所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法。 -
内置对象有几种?作用和使用范围是什么?
九种内置对象 作用 作用范围
Request 接受通过HTTP协议传送到服务器的数据 一个存储数据的区域
Response 服务器对客户端请求进行响应的内容 只在jsp页面内有效
Session 保存用户的信息,跟踪用户的操作状态 在一次会话范围内有效
Application 保存应用程序的上下文对象 整个上下文都有效
Out 向客户端浏览器输出信息 页面执行期
pageContext 保存当前也页面的对象 当前页面
Config 保存服务器的配置信息 页面执行期
Page 指向jsp页面本身 页面执行期
Exception 页面发生异常,产生的异常对象 页面执行期 -
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()方法运行在多线程的环境下。 -
servlet如何获取和传递初始化参数?
获取参数:使用request.getParamter(“请求参数名”)
传递参数:
request.setAttribute(“name”,value);
request.getAttribute(“name”); -
servlet转到视图组件时,如何获取视图组件的路径?
在转到视图组件时,请求发送到服务器端,利用过滤器,拦截视图组件的请求,在通过监听器将拦截到的视图组件的路径保存在监听域中。 -
说明servlet可获取哪些内置对象?如何获取?
request、response、session、application
request、response直接从传参中获得
Session通过req.getSession();
application通过servletContext -
过滤器的概念作用以及编码过滤器,请求验证过滤器的语法和配置和拦截过程。
概念:过滤器位于客户端和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);
}
}
}
配置:
拦截过程:
-
监听器的概念作用以及对application 内置对象和session内置对象的创建,销毁及属性的变化做监听的语法和配置。
-
MVC设计模式概念,MVC设计模式的优点。
概念:是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能的一种设计模式(M:Model V:View C:Controller)
优点:
1.低耦合性(视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。)
2.高重复性和可适应性
3.较低的生命周期成本
4.快速的部署
5.可维护性
6.有利于软件工程化管理 -
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。
(题型:选择、填空、判断、简答、编程)