java面试题之javaweb篇1

1、说一说Servlet的生命周期?

  首先执行init方法:

  初次在tomcat服务器访问该servlet的时候会创建实例,并且一个servlet只会实例化一次,故init方法也只执行一次

 

  再执行service方法:

  客户端每发出一次请求就会执行一次,没有次数上限

 

  最后执行destroy方法

  当将项目从tomcat中移除时,或正常关闭tomcat服务器(即执行shutdown.bat)时会执行

 

2、Servlet API中forward()与redirect()的区别?

  请求转发(forword):

       地址栏上显示的是请求servlet的地址

       请求次数只有一次,服务器内部帮助客户端执行了后续工作;也正是因为只请求了一次,效率更高,并且request对象没有改变,还可以使用上一次request对象中的数据

       只能跳转到当前项目下的资源路径

    

   重定向(redirect):

       地址栏上显示的是目标文件的路径地址

       请求次数至少两次,客户端在发起一次请求后,服务器会返回文件的地址信息;再由客户端发出请求,根据服务器给的地址执行下一次访问;由于发出不止一次的请求,效率更低,request对象也发生了改变,不能使用上一次request对象中保存的数据

       可以跳转到任意路径

 

3、request.getAttribute()和 request.getParameter()有何区别?

  getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型

 

  getParameter表示接收参数,参数为页面提交的参数,包括:表单提交的参数、URL重写(就是xxx?id=1中的id)传的参数等,因此这个并没有设置参数的方法(没有setParameter),而且接收参数返回的不是Object,而是String类型

 

4,jsp静态包含和动态包含的区别

  声明格式不同:

    静态包含:<%@ include file="文件" %>,而动态包含:<jsp : include page = "文件" />。

  

  编译成java文件的数量不同:

    静态包含会做一个整体编译,最终只有一个java文件

    动态包含是各个jsp文件分别转换,分别编译。最终编程成多个java文件

 

  执行时间不同

 

    静态包含发生在:JSP---->java文件阶段。

 

    动态包含发生在:执行class文件阶段。动态加入。

 

 

5,MVC的各个部分都有那些技术来实现?如何实现?

  Model(模型层):主要实现对数据的封装和处理,并完成业务逻辑;JavaBean、mybatis,hibernate来实现

  View(视图层):是与人进行交互的页面;JSP、SpringMVC页面实现

  Controller(控制层):接受请求,调用Model层处理数据,反馈给View层;Servlet实现

  

 

 

 

 

6,jsp有哪些内置对象?作用分别是什么?

  HttpServletRequet类的Request对象:代表请求对象,主要用于接受客户端通过HTTP协议连接传输服务器端的数据。

  HttpSevletResponse类的Response对象:代表响应对象,主要用于向客户端发送数据。

  JspWriter类的out对象:主要用于向客户端输出数据,out的基类是jspWriter

  HttpSession类的session对象:主要用来分别保存每个月的信息与请求关联的会话;会话状态的维持是web应用开发者必须面对的问题。

  ServletContext类的application对象:主要用于保存用户信息,代码片段的运行环境;它是一个共享的内置对象,即一个容器中的多个用户共享一个application,故其保存的信息被所有用户所共享。

  PageContext类的PageContext对象:管理网页属性,为jsp页面包装页面的上下文,管理对属于jsp的特殊可见部分中已经命名对象的访问,它的创建和初始化都是由容器来完成的。

  ServletConfig类的Config对象:代码片段配置对象,标识Servlet的配置。

  Object类的Page对象,处理jsp页面,是object类的一个实例,指的是jsp实现类的实例

  Exception对象:处理jsp文件执行时发生的错误和异常,只有在错误页面里才使用,前提是在页面指令里要有isErrorPage=true。

 

 

7,Http中,get和post方法的区别

  请求路径不同:

    post请求在url后面不跟任何数据;get请求在地址后面跟上数据

 

  带上的数据不同:

    post请求会使用流的方式写数据,所以数据没有大小限制;get是在地址上跟数据,数据最大只能1kb

    post一定需要一个Content-Length的头来说明数据的长度有多少

 

8,什么是cookie?Session和cookie有什么区别?

  Cookie就是一份小数据,是服务器给客户端的,并且储存在客户端上的数据

 

  session和cookie的区别:

    首先,session是基于cookie的一种会话机制

    session将数据存放在服务器端,更安全;cookie将数据存放在客户端,有安全隐患。

    cookie的大小和数量是有限制的,而session没有

    session 能够存储任意的 java 对象,cookie 只能存储 String 类型的对象 

 

 

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

  jsp文件的本质就是servlet,它最终会被web服务器转换为servlet并加载运行;而servlet实际上就是一个java类。

 

  二者的区别在于:jsp侧重于视图,而servlet侧重于控制逻辑

 

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

  当容器启动时,会读取在 webapps 目录下所有的 web 应用中的 web.xml 文 件,然后对 xml 文件进行解析,并读取 servlet 注册信息。然后,将每个应用中注册的 servlet 类都进行加载, 并通过反射的方式实例化。(有时候也是在第一次请求时实例化)在 servlet 注册时加上如果为正数,则在 一开始就实例化,如果不写或为负数,则第一次请求实例化。

posted @ 2020-04-07 11:19  发育中的程序猿  阅读(228)  评论(0编辑  收藏  举报