servlet

1、servlet生命周期

初始化:web容器加载servlet,调用init()方法;

处理请求:允许service()方法,service()自动运行与请求对应的doXXX方法(doGet或doPost) 

销毁:服务结束后,web容器调用servlet的distory()方法销毁servlet

2、jsp与servlet 有什么区别。

jsp在本质上就是servlet,但是两者的创建方式不同,servlet都是java程序代码构成,用于流程控制和事务处理,而jsp由html和jsp标签构成,可以方便地编写动态网页。jsp和servlet主要有两方面不同:编译:jsp修改后就可立刻看到效果,不需要编译,而servlet需要编译。转换:jsp是动态网页开发技术是运行在服务端的脚本语言,而servlet是web服务器的编程技术,所以jsp运行时就是转换为servlet。

3、get和post有何区别

get参数传递通过url,post放在resquest body中;

get请求参数有长度限制,post没有

get不安全,因为参数暴露在url中。

get请求只能进行url编码。post支持多种编码

get请求参数会被完整保留在浏览历史记录,而post不会被保留。

get和post本质就是tcp链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

get产生一个tcp数据包;post产生两个tcp数据包。

4、doGet与doPost方法的两个参数是什么

HttpServletRequest:封装与请求相关的信息

HttpServletResponse:封装了与响应相关的信息 

5、jsp有哪些内置对象

request :包含用户端请求的信息

response:包含服务器传回客户端的响应信息

session:与请求有关的会话期

pageContext:管理网页属性

application:服务器启动创建,服务器关闭停止,为多个应用程序保存信息

out:向客户端传输数据

config:servlet的架构组件

page:指网页本身

exception:针对错误页面才可使用

6、四大作用域

page:一个页面

request:一次请求

session:一次会话

application:服务器从启动到停止

7、jsp中动态include和静态include有什么区别

动态include用jsp:include动作实现<jsp:include page="include.jsp" flush="true"/> 他总是会检查所含文件中的变化,适合用于包含动态页面并且可以带参数。

静态include用include伪代码实现,定不会检查所含文件的变化,适用于包含静态界面<%@ include file="included.htm"%>
--------------------- 
作者:zks_4826 
来源:CSDN 
原文:https://blog.csdn.net/zks_4826/article/details/81010270 
版权声明:本文为博主原创文章,转载请附上博文链接!

1.讲下servlet的执行流程。

  Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()《启动顺序根据web.xml里的startup-on-load来确定加载顺序》
方法初始化servlet,再根据不同请求调用doGet或doPost方法,最后再通过destroy()方法进行销毁。

2.Get和Post的区别

在页面提交数据时,get的数据大小有限制4k,post没有限制,get请求提交的数据会在地址栏显示,post不显示,所以post比get安全.

3.有三台服务器,如果在一台服务器上登陆了这个用户,其他两台就不能再登陆这个用户,使用session共享,你是怎么做的。

把所有的session的数据保存到Mysql服务器上,所有Web服务器都来这台Mysql服务器来获取Session数据。

4.写一个自定义标签要继承什么类

 
  1. SimpleTagSupport,一般调用doTag方法

  2. 或者实现SimpleTag接口

5.Jsp如何处理json

在 jsp 中处理 JSON,通常需要配套使用 JQuery 控件,并且导入一些 Common jar 包。使用 JQuery 控件是因为它能有效的解析并且展示 JSON 数据,
导入Common 则是因为 Java 中的对象并不是纯粹的数据,需要通过这些 Jar 包的处理使之转化成真实数据。

6.如何处理Servlet的线程不安全问题

1.最简单的就是不使用字段变量,2.使用final修饰变量,3.线程安全就是多线程操作同一个对象不会有问题,线程同步一般来保护线程安全,
所以可以在Servlet的线程里面加上同步方法或同步块。(Synchronized)可以保证在同一时间只有一个线程访问,(使用同步块会导致性能变差,最好不去使用实例变量)

7.Jsp的重定向和转发的流程有什么区别

 
  1. 重定向是客户端行为,转发是服务器端行为

  2. 重定向时服务器产生两次请求,转发产生一次请求,重定向时可以转发到项目以外的任何网址,转发只能在当前项目里转发

  3. 重定向会导致request对象信息丢失。转发则不会

  4. 转发的url不会变,request.getRequestDispatch().forward()

  5. 重定向的url会改变,response.getRedirect().sendRedirect();

详细解释看这里

8.Jsp和Servlet的区别

 
  1. Jsp的可读性强,容易看得懂,并且Jsp在最后会编译成Servlet

  2. servlet容易调试,但是生成html页面工作量大

10.Jsp可以操作窗口吗?

Jsp不能够直接调用窗口,只能先生成打开窗口的js,再由js调用窗口

11.Session的主要几个方法的区别

Session不能通过new创建,需要通过调用getSession()或者getSession(true)方法创建,getSession()是自动创建session,
 
  1. getSession(true)是强制创建session,setAttribute()方法可以用于传值,getAttribute()可以用于取值

  2. (第一次创建session的时候,就是访问第一次一个jsp页面<这个页面的page指令 没有设置session=false>)

  3. 销毁session调用invalidate方法

  4. 通过setMaxInactiveInterval()可以设定session的生存时间(web.xml可以设置session的生存时间)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值