欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaWeb——课后作业一

程序员文章站 2022-05-12 13:40:43
...

1. 说说jetty与tomcat的区别。

相同点:

  • tomcat与jetty都是一种servlet的引擎,他们都支持标准的servlet规范和javaEE规范

不同点:

  • jetty更快,更灵活,内核更小。默认使用utf-8字符集,不存在中文乱码情况,但不太适合做大型开放。
  • tomcat比较传统,功能更强大,特别适合大型项目开发,但经常有中文乱码情况,默认使用ISO_8859_1字符集。

2. 如何修改jetty默认端口?如何修改tomcat默认端口?

2.1 修改jetty默认端口

  • 打开jetty安装目录下的start.ini文件
    JavaWeb——课后作业一
  • 如下图把端口修改为:8888
    JavaWeb——课后作业一

2.2 修改tomcat 默认端口

  • 打开tomcat安装目录下的server.xml文件
    JavaWeb——课后作业一
  • 如下图把端口修改为:8080
    JavaWeb——课后作业一

3. 如何启动jetty服务器?

一般情况下都可以通过安装目录下的start.jar包来启动jetty,除此之外,还可以通过dos命令,先进入jetty的安装文件夹,再输入命令来进行启动。
启动命令为:java -jar start.jar
JavaWeb——课后作业一

4. 简述Servlet的生命周期。

(1)加载和实例化
当Servlet容器启动或客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,若存在,则直接读取该实例响应请求,直接进入步骤(3);如果不存在,就通过构造方法创建一个Servlet实例。
(2) 初始化
实例化后,Servlet容器将调用Servlet的 init() 方法进行初始化(一些准备工作或资源预加载工作)。
(3)服务
初始化后,Servlet处于能响应请求的就绪状态。当接收到客户端请求时,调用service() 的方法处理客户端请求,HttpServlet的service()方法会根据不同的请求 转调不同的doXxx()方法:doGet()和doPost()
(4)销毁
重新发布项目,正常关闭tomcat时,会执行destroy() 方法,如果非正常关闭,相当于程序中断,不会执行方法。

//从左到右的次序
1.如果是第一次请求。
                           --->doGet
   构造方法-->init-->service            --->destroy
                           --->doPost

 2.如果不是第一次请求

   说明这个servlet已经驻留内存了。

             --->doGet
   service --             ---->destroy
             --->doPost

5. Servlet如何处理用户的请求?

  • 针对 Servlet 的每次请求,Web 服务器在调用 service() 方法之前,都会创建 HttpServletRequest 和 HttpServletResponse 对象。简称 request 对象和response 对象。浏览器访问 Servlet 的交互过程如下图所示:
    JavaWeb——课后作业一
  • 首先浏览器向 Web 服务器发送一个 HTTP 请求,Web 服务器根据收到的请求,会先创建一个 HttpServletRequest 和 HttpServletResponse 对象,然后再调用相应的 Servlet 程序
  • Servlet 程序运行时,它首先会从 HttpServletRequest 对象中读取数据信息,然后通过 service() 方法处理请求消息,并将处理后的响应数据写入到 HttpServletResponse 对象中。最后,Web 服务器会从 HttpServletResponse 对象中读取到响应数据,并发送给浏览器

6. 说说get请求和post的请求的区别。

相同点:

  • get和post都是http请求方式。(http请求方式远不止这两种)

不同点:

  • get 请求重点在从服务器上获取资源,而post 请求重点在向服务器发送数据
  • get 请求过程中其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度有限制,而 post 请求传递的参数放在Request body中,不会在地址栏的url中显示,比GET要安全,且参数长度无限制
  • get 请求比较常见的方式是通过url地址栏请求,而post 请求最常见是通过form表单发送数据请求

7. 说说相对地址与绝对地址的区别。

  • 相对地址相对当前资源的地址。 容易出错,写法简单
  • 绝对地址放之四海而皆准的地址。 肯定不会出错,拼起来比较麻烦
  • 举例:假设你的网页在如下位置:D:\WORK\web\111.html,而图片在D:\WORK\web\images\111.jpg,有以下两种情况:
    ①你在网页中直接以D:\WORK\web\images\111.jpg这个路径表示你的图片。<这个就是图片的绝对路径>
    ②你在网页中以: images\111.jpg来表示你的这个图片。<这个是图片的相对路径>

8. 说说请求重定向与请求转发的区别。

请求重定向(redirect):

  • 语法:response.sendRedirect(url); 需要两次请求,地址栏会发生改变,
    request对象也会变,且request 里的属性无法保存。

请求转(forward):

  • 语法:request.getRequestDispatcher(url).forward(request,response); 需要一次请求,地址栏不会发生改变,request对象不变,且request 里的属性可以保存。

9. jsp有哪九大内置对象?servlet如何获取session和application对象?

  • jsp的九大内置对象:out,page,request,response,session,application,exception,pageContext,config
    其中常用的是:request,response,session,application
  • 获取session对象
    request.getSession().setAttribute(“name”,“大胖”); //如获取大胖这个对象
  • 获取application对象
    request.getServletContext().setAttribute(“nation”,“china”); //如获取中国这个对象

10. 什么是单例?单例有哪些设计模式?

  • Java中单例的定义为:一个类有且仅有一个实例,并且自行实例化向整个系统提供。
  • 单例有懒汉模式和饿汉模式
    形象比喻:饿汉主动找食物吃,懒汉躺在地上等着人喂。
public class MySun {
    //懒汉模式
    private static MySun sun; //单例对象

    private MySun(){ //私有构造方法

    }
   //静态工厂方法
    public static MySun getInstance(){
        if(sun==null){
            sun = new MySun();
        }
        return sun;
    }
}

①要想让一个类只能构建一个对象,自然不能让它随便去做new操作,因此MySun的构造方法是私有的。
②sun是MySun类的静态成员,也是我们的单例对象。它的初始值可以写成null,也可以写成new new MySun()。
③getInstance()是获取单例对象的方法。如果单例初始值是null,还未构建,则构建单例对象并返回。这个写法属于单例中的懒汉模式。如果单例对象一开始就被new MySun()主动构建,则不再需要判空操作,这种写法属于饿汉模式

相关标签: 课后作业 web