• 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 注册时加上如果为正数,则在 一开始就实例化,如果不写或为负数,则第一次请求实例化。

  • 相关阅读:
    mysql 如何优化left join
    mysql按日期分组(group by)查询统计的时候,没有数据补0的解决办法。
    JVM中各种变量保存位置
    CDN原理
    为什么家里的宽带的IP显示的是外地?
    2017 年 PHP 程序员未来路在何方?
    Nginx开启Gzip压缩提高页面加载速度
    git如何强制用远程分支更新本地
    真正的S2b其实是S2b2c
    判断JS数据类型的几种方法
  • 原文地址:https://www.cnblogs.com/javaisbest/p/12650352.html
Copyright © 2020-2023  润新知