博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaWeb知识整理
阅读量:7095 次
发布时间:2019-06-28

本文共 3862 字,大约阅读时间需要 12 分钟。

  hot3.png

Java Web整理

  1. servlet生命周期

init service destroy方法

Servlet在被容器初始化后,容器运行其init方法,请求到达时运行service方法,service方法会自动派遣运行与请求对应的doxx方法,当服务器决定将实例销毁的时候调用其destroy方法

  1. forward和redirect的区别
  • forward 服务器处理,调用其他的地址将结果返回给浏览器 一般用于用户登录的时候,根据角色转发不同的对应的模块
  • redirect 浏览器处理 301 302 返回重定向的地址 用于注销登录和跳转页面等
  1. request的 getAttribute和getParameter的区别
  • parameter是通过容器来实现获取请求传递过来的参数 请求数据
  • attribute 只在web容器中内部流转 仅仅是请求处理阶段 setAttribute getAttribute 必须在同一个request中使用才有效

getAttribute返回的是对象,getParameter返回的是字符串

  1. jsp动态包含和静态包含的区别

<% file="xx.jsp"%>为jsp中的编译指令,其文件的包含是发生在jsp向servlet转换期间,而<jsp:include page="xx.jsp">是jsp中的动作指令,其文件的包含是发生在编译期间,也就是将Java文件编译为classl文件的时期

使用静态包含只会产生一个class文件,而使用动态会产生多个class文件

使用静态包含,包含页面和被包含页面的request对象为同一个对象,因为静态包含只是将被包含页面的内容复制到包含页面中区去

动态包含 包含页面和被包含页面不是同一个页面,被包含页面的request对象可以取得的参数范围相对大一点,不仅可以取得传递到包含页面的参数,同样也可以取得在包含页面向下传递的参数

  1. MVC 的部分

Model-View-Controller

Model 应用的业务逻辑 通过JavaBean EJB来实现

View 应用的界面

Controller 提供应用的处理过程控制 一般是servlet

  1. jsp 9个内置对象 作用

    • request 用户端请求
    • response 相应
    • pageContext 网页的属性在这里管理
    • session 会话
    • application servlet正在执行的内容
    • out 用来传送回应的输出
    • config servlet的构架部件
    • page jsp本身
    • exception 针对错误页面,未捕捉的例外
  2. 什么是cookie cookie和session的区别

Cookie是会话技术,将用户的信息保存到浏览器的对象

区别:

  • cookie数据存放在客户的浏览器中,session放在服务器上
  • cookie不是很安全 单个cookie有限制3K

结论:一般讲登录等重要信息存放在session中

  1. jsp和servlet的区别,共同点,各自应用的范围?

jsp是servlet的技术扩展,本质上及时servlet的简易方式 jsp编译后类servlet

不同点:

servlet的应用逻辑是在Java文件中,并且完全从表ishi曾中HTML中脱离出来 servlet重于控制逻辑 jsp的情况是Java和html组合 扩展名为jsp的文件 jsp重视图

  1. tomcat容器是如何创建servlet类实例的?用到了什么原理?

当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对xml文件进行解析,并读取servlet注册信息。然后将每个应用中注册的servlet都进行加载,通过反射的方法实例化(也可以在第一次请求的时候实例化)

在servlet注册时加上 <load-on-startup/> 1 <load-on-startup/> 正数,则在一开始实例化 不写或者负数在第一次请求的时候实例化

  1. JDBC访问数据库的基本步骤?

    • 加载驱动
    • 通过DriverManager对象获取连接对象Connection
    • 通过连接对象获取会话
    • 通过会话进行数据的增删改查,封装对象
    • 关闭资源

JDBC的DriverManager是一个工厂类,我们通过他来创建数据库连接。当JDBC的Driver类被加载进来的时候,他会自己注册到DriverManager类里面

然后我们会把数据库配置信息传到DriverManager.getConnection()方法,DriverManager会使用注册到他里面的驱动来获取数据库连接,并返回给调用的程序

  1. preparedStatement和Statement的区别

效率

安全:可以有效的避免sql注入攻击

  1. 事务相关的概念

事务作为单个逻辑工作单元执行的一系列操作

事务的四个属性:原子性 一致性 隔离性 持久性  ACID  只有这样才能成为一个事务 事务处理步骤

conn.setAutoCommit(false) 设置为手动提交

conn.commit() 提交事务

conn.rollback() 事务回滚

13. 脏读是什么?哪种数据库的隔离级别能防止脏读?

更新的数据还没有进行持久化的时候被另一个查询读到,更新的数据可能会进行回滚  这样这个数据就是无效的  脏读

防止脏读:

TRANSACTIONREADCOMMINTED read commited

TRANSACTIONREPEATABLEREAD repeatable read

TRANSACTION_SERIALIZABLE serializable

数据库四种隔离级别

  • serializable 串行化 可避免 脏读 不可重复读 幻读的发生
  • repeatable read 可重复读 可避免脏读 不可重复读的发生
  • read commited 读已提交 避免脏读
  • read uncommited 最低级别 任何情况都无法保证

数据库事务四大特性

  • 原子性 要么全完成要么全不完成
  • 一致性 数据库从一个一致性状态变换到另一个一致性状态
  • 隔离性 多个用户并发访问数据库时,数据库为每个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离
  • 持久性 事务一旦提交 对数据库中的数据改变就是永久性的

如果不考虑事务的隔离性会导致以下问题

  • 脏读 在一个事务的处理过程中读取了另一个未提交的事务中的数据
  • 不可重复读 一个事务范围内多次查询返回了不同的数据值
  • 虚读 幻读 幻读和不可重读都是读取了另一条已经提交的事务(这点和脏读不同),所不同的是不可重复读查询的是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)

execute execteQuerry executeUpdate的区别 * Statement的exectue方法用来执行任意的SQL查询 * execteQuerry 用来执行SQL的select查询 * executeUpdate 用来执行insert和update、delete语句

  1. SQL分页查询

ORACLE between

select * from(select *,rownum as tempid from table) twhere t.tempid between "+ pageSize*(pageNum-1)+"and"+pageSize*pageNum;

MySQL limit 起始数和每页个数

select * from table limit" + pageSize*(pageNum-1)+","+ pageSize";

sql Server

select top ” + pageSize + ” * from students where id not in +(select top ” + pageSize * (pageNumber-1) +  id from students order by id) +“order by id;
  1. JDBC 的ResultSet是什么?

在查询数据的时候会返回一个ResultSet,他就像查询结果集中的一张数据表

ResultSet对象维护了一个游标,指向当前的数据行。开始的时候这个游标指向的是第一行  next()方法下移一行

如果下一行没有数据返回false  可以使用for循环遍历所有的数据集

  1. Spring bean的作用域
  • singleton bean在Spring IOC容器中只有一个实例 缺省 默认
  • prototype 一个bean的定义可以有多个实例
  • request 每次请求都会创建一个bean
  • session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效
  • global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
  1. Spring中如果注入一个Java集合

list

set

map key/value 键值都可以是任意类型

props key/value必须都是Sting类型

转载于:https://my.oschina.net/kipeng/blog/1610291

你可能感兴趣的文章
塞尔校园先锋,教育优惠
查看>>
Oracle 物化视图
查看>>
Mybatis Mapper.xml 配置文件中 resultMap 节点的源码解析
查看>>
Hadoop
查看>>
【Unity】手游资源热更新策略探讨
查看>>
没有任何技术含量的一片日志
查看>>
我的友情链接
查看>>
android开发--RelativeLayout用到的一些重要的属性
查看>>
Oracle大表数据排序后分页查询效率很慢
查看>>
JFBlog 1.0 发布,基于 JFinal 的 Java 轻博客
查看>>
RHEL6配置Kdump
查看>>
nginx 跨域配置
查看>>
Redhat6.9更换yum源
查看>>
【转】为什么大型网站前端使用 PHP 后台逻辑用 Java?
查看>>
json_decode参数
查看>>
数据结构之图
查看>>
JSON 数组转化 OC的数组转化成OC格式的字符串
查看>>
spring retry重试机制原理解析(手写原理)
查看>>
编译安装web服务
查看>>
PHP: CodeIgniter3中函数名不能与控制器名相同的问题
查看>>