第二阶段

" "和null的区别

如果说str是nll,那么内存根本没创建字符串对象,并由str引用.不能调用object的方法
如果说str是空串,那么确实存在一个由str引用的字符串对象,只不过这个字符串的值是" ".长度为0
在获取请求参数的时候为什么要这样判断呢?
if(null==str || " ".equals(str){
return “不合法参数”;
}
如果我们在表单中什么都不填 接收到的字符串就是null;
如果我们在表单中填 “” ,接受到的字符串是 " ",但是存入数据库后,查询出来的就是null;

Servlet的多线程同步问题

	Servlet本身就是单实例的,这样当有多个用户同时访问某个Servlet时,会访问该唯一的Servlet实例中的成员变量,如果对成员变量进行写入操作,拿就会导致Servlet的多线程问题,即数据不一致
1 解决Servlet多线程同步问题的最好方式:取出实例变量,使用局部变量
不使用成员变量,而使用局部变量,因为局部变量在每个线程中都有各自的实例
所以对Servlet来说,如果说对某个变量做写入操作,一定不要使用成员变量,而要使用局部变量
2 使用同步代码块
		synchronized{}
3 Servlet实现 javax.servlet.ShingleThreadModle, Serblet2.4中已经废弃了该接口,此时Servlet容器将保证Servlet实例以单线程方式运行,也就是说,同一时刻只会有一个线程执行Servlet的service()方法

详细描述MVC

基于java的web应用系统采用MVC设计模型,即用Model(模型),View(视图)和Controller(控制)分离设计,这是目前web应用服务系统的主流设置方向
Model:处理业务逻辑的模块
View: 负责页面显示,显示Model的处理结果给用户,主要实现数据到页面的转换过程
Controller: 负责每个请求的分发,把Form数据传递给Model进行处理,处理完成后,把处理结果返回给响应的View显示给用户

EL表达式的功能,为什么用EL表达式?

功能:

a. 从四个域对象中取出数据显示
b. 取出请求参数数据显示

原因:

在页面中用jsp脚本和jsp表达式来获取数据显示比较麻烦
a. 需要判断
b. 可能需要强转

如何防止表单重复提交?

使用session技术:
a, 在regist.jsp页面中生成一个为一个随机值,将其保存到session中,同时将保存为表单的隐藏域的值
b. 在处理注册的请求时,获取session中的值,获取请求参数的值,比较两者是否相同,如果相同说明不是重复提交,请求通过同时删除session中保存的值,如果不相同则时重复提交,不能通过

什么是web容器

给处于其中的应用程序组件(JSP,Servlet)提供一个环境,是JSP,Servlet直接跟容器中的变量交互,不必关注其他系统问题
主要有web服务器来实现.例如:tomcat ,weblogic ,sphere ,JBoss等.该容器提供的接口严格遵守J2EE规范中的web aoolication标准
我们把遵守以上标准的web服务器叫做J2EE的web容器

什么是事物?

事物是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为ACID(原子性,一致性,隔离性和持久性)属性;
只有这样才能成为一个事物:
原子性:事物必须是原子工作单元,对于其数据修改,要么全部执行,要么全部不执行
一致性:事物在完成时,必须使所有的数据保持一致的状态.在相关数据库中,所有规则都必须应用于事物的修改,以保持所有的数据的完整性.事物结束时,所有的内部数据结构(如B树索引或双向链表)都必须是正确的
隔离性: 由并发事物所做的修改必须于任何其他并发事物所做的修改隔离. 事物查看数据时数据所处的状态,要么时另一并发事物修改它之前的状态,要么是另一并发事务修改它之后的状态,事物不会查看中间状态的数据.这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事物,以使数据结束时的状态与原始事务执行的状态相同
持久性: 事物完成后,它对系统的影响是永久性的.该修改即使出现系统故障也将一直保持

数据库有几种隔离级别?

1 Serializable(串行化): 可避免脏读,不可重复读.幻读的发生
2 Repeatable read(可重复读): 可避免脏读,不可重复读的发生
3 Read committed(读已提交) : 可避免脏读的发生
4 Read uncommitted(读未提交): 最低级别,任何情况都无法保证

简述web.xml的作用

属于部署描述符,在整个JAVA中只要是容器都会存在部署描述符,次部署描述符,此部署描述符可以控制整个WEB中各个组件的运行状态,也可以配置整个窗口的状态

sql优化:(索引,范式)

三范式

  • 第一范式(确保每列保持原子性)最基本范式. 数据库表中所有字段值都是不可分解的原子值,就满足了第一范式
    第二范式(确保表中的每列都和主键相关)
    在第一范式上更近一层.确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关,也就是说一个表中只能保持一种数据,不可以把多种数据保存在一张表中
    第三范式:确保每列都和主键列直接相关,而不是间接相关

索引

  • 避免对索引字段进行计算,避免索引在字段上使用not,<>,!=, 避免在索引上使用IS NULL和NOT NULL
    避免在索引列上出现数据类型转换,避免索引字段使用函数,避免简历索引的列出现控制

Ajax原理

Ajax的工作原理相当于在用户和服务器之间加了一个中间层,使4用户操作与服务器响应异步化.并不是所有的用户请求都提交给服务器,像一些数据验证和数据处理等都交给AJax引擎自己来做,只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求
Ajax其核心只有JavaScript. XMLHTTPRequest和DOM,在旧的交互方式中,由用户触发一个HTTP请求到服务器,服务器对其进行处理后再返回一个新的HTHL页到客户端,每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互,只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和贷宽去重新读取整个页面.而使用AJax后用户从感觉上几乎所有的操作都会很快响应没有页面重载的等待
i

JDBC的原理

在这里插入图片描述

SQL注入攻击

sql注入使一种sql代码添加到输入参数中,传递到服务器解析并执行的一种攻击手法
sql注入攻击使输入参数未经过滤,然后直接拼接到sql语句当中解析,执行达到预想之外的一种行为,称之为sql注入攻击

对连接池的理解

用来提高程序的效率,创建一个容器,容器中存放已经获取到了的数据库连接对象,对外提供获取连接和还回连接的方法,外界需要时就从容器中获取,用完就还回容器中

HTML和xml的区别

xml是可扩展标记语言,HEML超文本标记语言
1 语法有所不同,xml语法比较严谨而HTML语法比较松散
2 用途不同.xml主要用于数据可视化存储而HTML主要用于网页的编辑

Tomcat配置.部署优化

1 内存优化:Tomcat依赖于JVM,可以配置JVM的内存配置
2 最大连接数配置(并发能力)
通常搭配Nginx提升Tomcat的并发性能

html和jsp的区别及优缺点?

HTML文本标记语言,它是静态页面,和JavaScript一样解释性语言,因为只要你有一个浏览器那么它就可以正常显示出来,而不是需要指定的编译攻击,只需再TXT文档中写上HTML标记就OK
JSP是java服务端的页面,所以它是动态的.需要经过JDK编译后把内容发送到客户端去显示,
1 最简单的区别就是,HTML能直接打开,jsp只能发布到Tomcat等服务器上才能打开
2 定义上HTML页面时静态页面可以直接运行,JSP页面时动态它运行时需要转换成servlet
3 他们的表头不同,这个时JSP的头“ <%@ page language=“java” import=“java.util.*” pageEncoding=“gbk”%>”在表头中有编码格式和导入包等
4 也是很好区分的在jsp中用<%%>就可以写Java代码了,而html没有<%%>

HTML和Servlet的区别

Html是静态,servlet是动态 html页面由服务器直接返回,servlet是用来处理客户请求,并返回html页面,Servlet需要服务器调用servlet方法生成动态html页面,且需要在web.xml中配置url路径

request,response,session和application是怎么用的

1 Request是客户端向服务端发送请求
2 Response是服务端对客户端请求做出响应
3 Session在serblet中不能直接使用,需要通过getSession()创建,如果没有设定它的生命周期,或者通过invildate()方法销毁,关闭浏览器session就会消失
4 Application不能直接创建,存在于服务器的内存中,由服务器创建和销毁

Spring在ssm中起什么作用?

Spring:轻量级框架
作用:Bean工厂,用来管理Bean的生命周期和框架集成
两大核心:

  1. IOC/DI(控制反转/依赖注入):把dao依赖注入到service层,service层反转给action层,Spring顶层容器为BeanFactory.
  2. AOP: 面向切面编程

Spring的配置文件中的内容?

开启事物注解驱动
事物管理器
开启注解功能,并配置扫描包
配置数据库
配置SQL会话工厂,别名,映射文件
不用编写Dao层的实现类

Spring主要使用了什么模式?

工厂模式: 每个Bean的创建通过方法
单例模式: 默认的每个Bean的作用域都是单例
代理模式: 关于Aop的实现通过代理模式

Struts2和SpringMvc的区别?

入口不同:
Struts2: filter过滤器
SpringMvc: 一个Servlet即前端控制器
开发方式不同:
Struts2: 基于类开发,传递参数通过类的属性,只能设置为多例
SpringMvc: 基于方法开发(一个url对应一个方法),请求参数传递到方法形参,可以为单例也可以为多例(建议单例)

请求方法不同:
Struts2:指定纯属请求和响应的数据,通过OGNL存取数据
SpringMvc: 通过参数解析器将request请求内容解析,给方法新参赋值,将数据和视图封装成ModelAndView对象,最后将ModelAndView中的模型数据通过request域传输到页面,jsp视图解析器默认使用的是jst

Mybatis的好处?

把Sql语句从java中独立出来
封装了底层的JDBC, API的调用,并且能够将结果集自动转换成JavaBean对象,简化了java数据库编程的重复工作.
自己编写Sql语句,更加的灵活
入参无需用对象封装(或者map封装),使用@Param注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值