Javaweb日常,

1 、Tomcat 的优化经验

  • 去掉对 web.xml 的监视,把 jsp 提前编辑成 Servlet
  • 有富余物理内存的情况,加大 tomcat 使用的 jvm 的内存。

2 、HTTP 请求的 GET 与 与 POST 方式的区别

  • 1、GET请求。请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的 是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。 POST请求。POST请求会把请求的数据放置在HTTP请求包的包体中。GET请求的数据会暴露在地址栏中,所以,GET请求不安全,而POST请求则不会。
  • 2、传输数据的大小。 在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器 和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。GET有长度限定,POST理论上没有。
  • 3、安全性 。POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的 安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到 了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击 。

3 、解释一下什么是 servlet

  • (1) Servlet(Server Applet),全称Java Servlet。是用Java编写的服务器端程序,其主要功能在于交互式地浏览和 修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个 Servlet接口的类,一般情况下,人们将Servlet理解为后者。
  • (2) Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下 Servlet只用来扩展基于HTTP协议的Web服务器。
  • (3) Servlet工作模式:
    ① 客户端发送请求至服务器。
    ② 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器。
    ③ 服务器将响应返回客户端
  • 简单总结,Servlet就是获取请求处理请求响应

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

  • servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。

  • 当客户端首次发送第一次请求后,由容器(web服务器(tomcat))去解析请求, 根据请求找到对应的servlet,判断该类的对象是否存在,不存在则创建servlet实例。

  • 调取init()方法进行初始化操作,

  • 初始化完成后调取service()方法,由 service()判断客户端的请求方式,如果是get,则执行doGet(),如果是post则执行doPost()。处理方法完成后,作出相应结果给客户端。单次请求处理完毕。 当用户发送第二次以后的请求时,会判断对象是否存在,但是不再执行init(),而直接执行service()方法,调取 doGet()/doPost()方法。

  • 当服务器关闭时调取destroy()方法进行销毁。

  • 四个过程:

    (1)实例化 --先创建servlet实例
    (2)初始化 --init()
    (3)处理请求 —service()
    (4)服务终止 --destory()
    在这里插入图片描述

6 、SERVLET API 中 中 forward() 与 与 redirect() 的区别?

在这里插入图片描述
重定向和转发的对比

  • 重定向:response.sendRedirect()

  • 转发:request.getRequestDispatcher("../success.jsp").forward(request,response);

  • 相同点:都用来跳转页面

  • 不同点:
    a.重定向时地址栏会改变,request中存储的数据会丢失。转发时地址栏显示的是请求页面的地址,request数据可以保存。
    b.转发属于一次请求一次响应,重定向属于两次请求(地址栏修改了两次)两次响应

7 、什么情况下调用 doGet()和 和 doPost() ?

  • Jsp 页面中的 FORM 标签里的 method 属性为 get 时调用 doGet(),为 post 时调用 doPost()

8. jsp 有哪些内置对象? 作用分别是什么? 分别有什么方法?

  • JSP 共有以下 9 个内置的对象:
    1、request对象
    用户端请求,此请求会包含来自 GET/POST 请求的参数request 对象是javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。
    2、response对象
    网页传回用户端的回应response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。所属类型:HttpServletResponse
    3、session对象
    与请求有关的会话期session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用 于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。HttpSession
    4、application对象
    servlet 正在执行的内容。application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用 中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量” ServletContext
    区别:
    request:单次请求 session:浏览器访问期间(会话期间)
    application:服务器启动期间,所存的数据可以跨浏览器
    request 用户端请求,此请求会包含来自 GET/POST 请求的参数
    5、out 对象
    用来传送回应的输出。 out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时, 可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要 及时关闭输出流。
    6、pageContext 对象
    网页的属性是在这里管理pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、 session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
    7、config 对象
    servlet 的构架部件config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取 一个config对象。当一个Servlet 初始化时,容器把某些信息通过config对象传递给这个 Servlet。 开发者可以在 web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
    8、page 对象
    JSP 网页本身 。page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变 量,类似于Java编程中的 this 指针。
    9、exception 对象
    针对错误网页,未捕捉的例外。exception 对象的作用是显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用,在一般的 JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。 exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP 页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误 页面中,然后在错误页面中处理相应的 exception 对象。

9、JSP 和 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么?

  • JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。
    JSP 编译后是"类 servlet"。Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java 和 HTML可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。

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

  • MVC 是 Model-View-Controller 的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB 组件实现), View 是应用的表示面(由 JSP 页面产生),Controller 是提供应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

猜你喜欢

转载自blog.csdn.net/weixin_44809329/article/details/109298606