• java笔试题三(javaWeb)


    1.讲一下Servlet的执行过程,doGet和doPost的区别。

        执行过程:

              比如注解配置版本,先继承httpServlet,一旦发送get请求

       调用,再执行post方法。

     

        doGet和doPost的区别:

                 功能上:doGet是处理get请求,doPost是处理post请求。

                 表现上:doGet用于地址栏提交doPost用于表单的提交,且不

                             在地址栏上显示,所以更安全。

                 数据上:页面提交数据的时候,get的数据大小是4K,post没有限制。

     

       说明:

             Servlet的执行过程也是Servlet的生命周期,当服务器启动的时候生命周期开始。

             先初始化(init),再加载web.xml文件,再按不同要求调用doGet或doPost方

             法,最后用destroy销毁

     

     

    2.当service有一个实例变量,doGet和doPost去调用这个变量,会出现什么问题?

           出现线程不安全问题,无论是doGet和doPost去调用,服务器处理都是

    一样的过程,那么可以把处理过程单独写一个handle里,让这两个方法调用

    handle,根据不同请求调用不同的方法。

     

    3.如何处理servlet的线程不安全的问题?(网络)

             servlet是一个单例(在堆中),在请求的情况下去共享一个servlet,就会

    出现线程不安全的情况,所以最好不要定义全局变量,最好定义局部变量

    synchronized就可以保证在同一时间只有一个线程访问。(所以同步块会导致

    性能变差,最好不去用实例变量)(百度查一下)

     

    4.JSP的重定向和转发的流程有什么区别?

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

              重定向是服务器产生两次请求,转发是一次请求,重定向是可以转发到项目以外的

    任何网址,转发只能在当前项目里转发。

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

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

              重定向的URL会改变,response.getRedirect()

     

    5.JSP和Servlet的区别?

               JSP的可读性强,易于维护,并且JSP在最后会编译成servletservlet容易

        调试。

     

    6.谈谈session

                客户端向服务器发送请求,这个session存放在服务器端,客户端通过session

    ID来找到服务器端里面的session 

                (如果重新打开一个客户端去访问sessionID会不一样??是随机分配的)

                 session不会因为浏览器的关闭而删除,只要时间过期了就会关闭,只会通过

    上面提到的方式去关闭。(百度查一下)

     

    7.同一个客户端及其多次访问同一个资源,sessionID一样吗?

              是一样的,一般来说,每次请求都会新创建一个session。  

     

    8.JSP的九大内置对象,三大指令,七大动作的具体功能??(高频**)

           JSP九大内置对象:

           pageContext:只对当前页面有效,里面封装了基本的request和session的对象。

           request:对当前请求进行封装。

           Session:浏览器回话对象,对整个web工程都有效

           Application:应用程序对象,对于整个web工程都有效

           Out:页面打印,在JSP页面打印字符串

           Response:返回访问器端信息给用户

           Config:单个servlet的配置对象,相当于servletConfig对象

           Page:当前页面对象,也就是this

           Exception:错误页面的exception对象,如果指定的是错误页面,这个就是异常对象

           

           三大指令:

           Page:指令是针对当前页面的指令

           include:用于指定如何包含另一个页面

           Taglib:用于定义和指定自定义并且

     

           七大动作:

            Forward:执行页面跳转,将请求的处理转发到另一个页面

            Param:用于参数传递

            Include:用于动态引入一个JSP页面

            Plugin:用于下载JAVABean或applet到客户端

            useBean:使用javaBean

            setProperty:修改javaBean实例的属性值

            setProperty:获取实例的属性值

               (看一下书,不要硬记)

     

    13.获取页面的元素和值,说一下。

            request.getParamter()返回客户端的请求参数和值

            request.getParamterNames()返回所有可以属性名的枚举

            request.getParamterValues()返回包含参数的所有的数组

            

    14.servlet和javaScript的区别,它们分别是什么作用?

             一个是服务器端,一个是客户端。

             servlet独立于平台协议的服务器java应用程序,可以动态生成web页面,并采用

    并采用响应——请求的模式提供web服务。(与java相关,独立于服务器端的servlet,Javaweb应用)

             javaScript是一种解释性语言,用于向HTML页面提供的一种交互行为,通常被

    直接嵌入在HTML页面中。(与HTML相关,嵌入到HTML的js,前端)

            servlet是java语言编写的web应用(javaWeb应用)

            js是基于html上的一种解释语言(前端)

     

    15.JSP的执行原理

             客户端发出请求(request),JSP引擎将JSP页面翻译成servlet的java源文件,

    在Tomcat中将源文件翻译成class文件,并加载到内存中执行,把结果返回(response)

    给客户端。

     

    16.HTML和servlet的异同

           不同:HTML是静态框架,servlet动态web应用。

                     html页面有服务器直接返回

                     servlet是用来处理客户请求,并返回HTML页面

                     servlet需要服务器调用servlet方法生成动态html页面,且需要在

                     web.xml中配置URL路径。

     

    17.回话跟踪有哪些?它们的区别是什么?

             Cookie,session和application

             Cookie是HTTP对象,客户端和服务器端都可以操作

             cookie是在客户端保持状态,session是在服务器端保持状态,由于...

     

    18.session和application的作用?

             Session用于客户端与服务器端之间保存状态的解决方案,数据保存

    在服务器内存中,底层是cookie实现的; Application的作用域是整个工程

    里只有一个,可以在不同浏览器之间共享数据,所有人都可以共享,因此

    application是不安全的。

     

    19.404和500是什么意思?

             404:找不到URL请求的路径,一般是工程名不对或拼写错误

             505:服务器内部错误,一般是服务器内部代码编写错误,也有

                     可能是抛出异常。

     

     

    20.我们在web应用开发过程中会遇到乱码,如ISO -8859-1,如何输入一个

    某种编码的字符串?

             如将ISO-8859-1输出为GBK格式的字符,通过

    new String(byte[] bytes,String charset)构造器设置编码构造一个新的

    String(new String(“ISO-8859-1”,“GBK”));

    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    SQLServer 日期函数大全 SQLServer 时间函数大全
    matlab练习程序(最小二乘多项式拟合)
    常用的docker命令
    【Python】keras使用LSTM拟合曲线
    【Python】keras使用Lenet5识别mnist
    【Python】pydot安装失败解决方法
    【Python】keras卷积神经网络识别mnist
    【Python】keras神经网络识别mnist
    matlab练习程序(神经网络识别mnist手写数据集)
    判断exe是64位还是32位
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/8598102.html
Copyright © 2020-2023  润新知