原生JavaWeb相关问题

一、自定义 servlet 的三种方式,及区别?

1.实现javax.servlet.Servlet接口

重写五个基本方法:

  • public void init(ServletConfig config)=>初始化servlet
  • public void service(ServletRequest request,ServletResponse response)=>为传入的请求提供响应
  • public void destroy()=>销毁servlet
  • public ServletConfig getServletConfig()=>返回ServletConfig对象
  • public String getServletInfo()=>返回servlet的有关信息

2.继承javax.servlet.GenericServlet类
重写类中service()方法:

  • public void service(ServletRequest request,ServletResponse response) throws IOException { }

3.继承javax.servlet.http.HttpServlet类(重要)
重写类中doGet()与doPost()方法:

  • protected void doGet(HttpServletRequest request,HttpServletResponse response) =>处理get请求
  • protected void doPost(HttpServletRequest request,HttpServletResponse response)=>处理post请求

二、写出 Servlet 中的三大作用域,并分别说明各自的特点?

1.request
作用域:一次请求
request是一个请求,只要发送一个请求就会创建一个request对象,这个对象只在本次请求中有效。
request对象常用的方法有:request.setAttribute(), request.getAttribute(), request.removeAttribute(), request.getParameter()等。
2.session
作用域:当前会话。
  所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。
3.application
作用域:整个应用。
整个应用是指从应用启动,到应用结束。application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。

三、filter 和 servlet 在生命周期上的区别

Servlet生命周期:
整个生命周期由Servlet容器进行管理执行构造方法【1,第一次访问时】 -> 执行初始化方法【1,第一次访问】 -> 执行核心方法【n,每次访问】 ->销毁【正常关闭Tomcat】
Filter生命周期:
Filter的生命周期:整个生命周期由Servlet容器进行管理 执行构造方法【1,tomcat启动时】 -> 执行初始化方法【1,tomcat启动时】 -> 执行核心方法【n,每次访问】 ->销毁【正常关闭Tomcat】

四、表单提交的 2 种方式get与post区别?

1、GET请求的数据会暴露在地址栏中,⽽POST请求则不会

  • GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是unicode,即是说所有的非ASCII字符都要编码之后再传输。
  • POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上⾯的item=bandsaw就是实际的传输数据。

2、传输数据的大小

  • 在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的⻓度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。
  • 对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。

3、安全性
POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上⾯提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他⼈查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他⼈拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击

五、有哪些内置对象? 作用分别是什么?

1、request对象

  • request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为⼀次请求。

2、response对象

  • response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。所属类型:HttpServletResponse

3、session对象

  • session 对象是由服务器⾃动创建的与用户请求相关的对象。服务器为每个用户都⽣成⼀个session对象,用于保存该⽤户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

4、application对象

  • application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量” ServletContext

5、out 对象

  • out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

6、pageContext 对象

  • pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。

7、config 对象

  • config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取⼀个config对象。当⼀个Servlet 初始化时,容器把某些信息通过config对象传递给这个Servlet。 开发者可以在web.xml ⽂件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

8、page 对象

  • 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 对象。

六、JSP请求是如何被处理的

  • 客户端通过浏览器发送jsp请求,服务器接收到请求后,判断是否是第一次请求该页面,或者该页面是否改变,若是,服务器将jsp页面翻译为servlet,jvm将servlet编译为.class文件,字节码文件加载到服务器内存上执行,服务器将处理结果以.html页面的形式返回给客户端,若该页面不是第一次请求,则省略翻译和编译的步骤,直接执行。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值