趣文网 > 作文大全

JavaEE基础必会关于Tomcat和Servlet的面试题

2020-12-02 04:05:01
相关推荐

什么是Tomcat?

Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器。

tomcat结构目录有哪些?bin:启动和关闭tomcat的bat文件

conf:配置文件server.xml该文件用于配置server相关的信息,比如tomcat启动的端口号,配置主机(Host)web.xml文件配置与web应用(web应用相当于一个web站点)tomcat-user.xml配置用户名密码和相关权限.lib:该目录放置运行tomcat运行需要的jar包logs:存放日志,当我们需要查看日志的时候,可以查询信息webapps:放置我们的web应用work工作目录:该目录用于存放jsp被访问后生成对应的server文件和.class文件

如何配置Tomcat虚拟目录?

1. 在server.xml中的节点下添加如下代码。path表示的是访问时输入的web项目名,docBase表示的是站点目录的绝对路径2. 进入到confCatalinalocalhost文件下,创建一个xml文件,该文件的名字就是站点的名字。

Tomcat体系结构是怎样的?

浏览器 -> tomcat server-> service ->connector -> engine(引擎) -> host(主机) -> web应用

Web请求在Tomcat请求中的请求流程是怎么样的?

1.浏览器输入URL地址2.查询本机hosts文件寻找IP3.查询DNS服务器寻找IP4.向该IP发送Http请求5.Tomcat容器解析主机名6.Tomcat容器解析Web应用7.Tomcat容器解析资源名称8.Tomcat容器获取资源9.Tomcat响应浏览器

什么是Servlet?

Servlet其实就是一个遵循Servlet开发的java类。Servlet是由服务器调用的,运行在服务器端。

HttpServlet类有哪些方法?

有init【初始化】,destroy【销毁】,service【服务】,ServletConfig【Servlet配置】,getServletInfo【Servlet信息】。

Servlet生命周期?

加载Servlet : 当Tomcat第一次访问Servlet的时候,Tomcat会负责创建Servlet的实例初始化 : 当Servlet被实例化后,Tomcat会调用init()方法初始化这个对象处理服务 : 当浏览器访问Servlet的时候,Servlet 会调用service()方法处理请求销毁 : 当Tomcat关闭时或者检测到Servlet要从Tomcat删除的时候会自动调用destroy()方法,让该实例释放掉所占的资源。一个Servlet如果长时间不被使用的话,也会被Tomcat自动销毁卸载 : 当Servlet调用完destroy()方法后,等待垃圾回收。如果有需要再次使用这个Servlet,会重新调用init()方法进行初始化操作。简单总结:只要访问Servlet,service()就会被调用。init()只有第一次访问Servlet的时候才会被调用。destroy()只有在Tomcat关闭的时候才会被调用。

Servlet是单例的吗?

浏览器多次对Servlet的请求,一般情况下,服务器只创建一个Servlet对象,也就是说,Servlet对象一旦创建了,就会驻留在内存中,为后续的请求做服务,直到服务器关闭。

Servlet是如何实现请求和响应的?

对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。

Servlet存在线程安全的问题吗?

当多个用户访问Servlet的时候,服务器会为每个用户创建一个线程。当多个用户并发访问Servlet共享资源的时候就会出现线程安全问题。如果一个变量需要多个用户共享,则应当在访问该变量的时候,加同步机制synchronized (对象){}如果一个变量不需要共享,则直接在 doGet() 或者 doPost()定义.这样不会存在线程安全问题

Servlet的加载时机是在什么时候?

在servlet的配置当中,可以使用5标签进行配置标记容器是否在启动的时候就加载这个servlet。当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。正数的值越小,启动该servlet的优先级越高。

为什么我没有配置关于图片的Servlet我缺可以访问这个静态图片?

在web访问任何资源都是在访问Servlet,这是由缺省Servlet为你服务的!什么叫做缺省Servlet?凡是在web.xml文件中找不到匹配的元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求既然我说了在web访问任何资源都是在访问Servlet,那么我访问静态资源【本地图片,本地HTML文件】也是在访问这个缺省Servlet【DefaultServlet】总结:无论在web中访问什么资源【包括JSP】,都是在访问Servlet。没有手工配置缺省Servlet的时候,你访问静态图片,静态网页,缺省Servlet会在你web站点中寻找该图片或网页,如果有就返回给浏览器,没有就报404错误

ServletConfig对象有什么用?

ServletConfig获取的是配置的是单个Servlet的参数信息,ServletContext可以获取的是配置整个web站点的参数信息通过此对象可以读取web.xml中配置的初始化参数。能够让你的程序更加灵活【更换需求,更改配置文件web.xml即可,程序代码不用改】

什么是ServletContext对象?

当Tomcat启动的时候,就会创建一个ServletContext对象。它代表着当前web站点ServletContext既然代表着当前web站点,那么所有Servlet都共享着一个ServletContext对象,所以Servlet之间可以通过ServletContext实现通讯。ServletConfig获取的是配置的是单个Servlet的参数信息,ServletContext可以获取的是配置整个web站点的参数信息可以利用ServletContext读取web站点的资源文件实现Servlet的转发【用ServletContext转发不多,主要用request转发】

通过Servlet读取一个文件有哪些方式?

文件在class路径下(使用绝对路径)ServletContext servletContext = this.getServletContext();InputStream inputStream = servletContext.getResourceAsStream("/WEB-INF/classes/test/web/1.png")

文件在class路径下(使用类加载器)ClassLoader classLoader = Servlet111.class.getClassLoader();InputStream inputStream = classLoader.getResourceAsStream("3.png");

文件在Web路径下(相对路径名)ServletContext servletContext = this.getServletContext();InputStream inputStream = servletContext.getResourceAsStream("2.png");

什么是HttpServletRequest和HttpServletResponse对象?

Tomcat收到客户端的http请求,会针对每一次请求,分别创建一个代表请求的request对象、和代表响应的response对象。HttpServletRequest和HttpServletResponse就是针对请求和响应进行封装的对象。

HttpServletResponse向页面输出内容的方式有哪些?

调用getOutputStream()方法向浏览器输出数据response.getOutputStream().write("aaa".getBytes());

调用getWriter()方法向浏览器输出数据PrintWriter printWriter = response.getWriter(); printWriter.write("哈哈!");

解决输出中文乱码response.setContentType("text/html;charset=UTF-8");

Tomcat的缺省端口是多少,怎么修改

8080

找到Tomcat目录下的conf文件夹进入conf文件夹里面找到server.xml文件打开server.xml文件在server.xml文件里面找到下列信息

Tomcat 有哪几种Connector 运行模式(优化)?

bio(blocking I/O)nio(non-blocking I/O)apr(Apache Portable Runtime/Apache可移植运行库)bio: 传统的Java I/O操作,同步且阻塞IO。nio: JDK1.4开始支持,同步阻塞或同步非阻塞IOaio(nio.2): JDK7开始支持,异步非阻塞IO

Tomcat有几种部署方式?

直接把Web项目放在webapps下,Tomcat会自动将其部署在server.xml文件上配置节点,设置相关的属性即可通过Catalina来进行配置:进入到confCatalinalocalhost文件下,创建一个xml文件,该文件的名字就是站点的名字。编写XML的方式来进行设置。get方式和post方式有何区别

数据携带上GET方式:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。POST方式:可以在请求的实体内容中向服务器发送数据,传送的数据量无限制。

请求参数的位置上GET方式:请求参数放在URL地址后面,以?的方式来进行拼接POST方式:请求参数放在HTTP请求包中

用途上GET方式一般用来获取数据POST方式一般用来提交数据

HttpServlet的 doGet与doPost方法的两个参数是什么

HttpServletRequest:封装了与请求相关的信息HttpServletResponse:封装了与响应相关的信息

Servlet获取页面的元素的值有几种方式,分别说一下

request.getParameter() 返回客户端的请求参数的值request.getParameterNames() 返回所有可用属性名的枚举request.getParameterValues() 返回包含参数的所有值的数组

request.getAttribute()和request.getParameter()区别

用途上request.getAttribute(), 一般用于获取request域对象的数据(在跳转之前把数据使用setAttribute来放到request对象上)。request.getParameter(), 一般用于获取客户端提交的参数。

存储数据上request.getAttribute()可以获取Objcet对象request.getParameter()只能获取字符串(这也是为什么它一般用于获取客户端提交的参数)

forward和redirect的区别?

发生位置不同转发是发生在服务器的,重定向是发生在浏览器的(二次请求,丢失第一次请求的数据)。

传递数据的类型不同转发的request对象可以传递各种类型的数据,包括对象,重定向只能传递字符串。

跳转的时间不同转发时:执行到跳转语句时就会立刻跳转。重定向:整个页面执行完之后才执行跳转。

能够去往的URL的范围不一样:转发是服务器跳转只能去往当前web应用的资源。重定向是服务器跳转,可以去往任何的资源。

典型的应用场景:转发: 访问 Servlet 处理业务逻辑,然后 forward 到 jsp 显示处理结果,浏览器里 URL 不变重定向: 提交表单,处理成功后 redirect 到另一个 jsp,防止表单重复提交,浏览器里 URL 变了

tomcat容器是如何创建servlet类实例?用到了什么原理?

当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对 xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过 反射的方式实例化。(有时候也是在第一次请求时实例化)。在servlet注册时加上1如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

我的旅行作文 作文八年级上册 一年级下册作文 心理描写作文 高考日语作文 成长的作文题目 梦想500字作文 作文英文怎么说 初二作文800字 启蒙作文 知足作文 作文3000字 人物作文800字 写一封信的作文 不平凡的作文 童年作文结尾 体育素材作文 老师作文800字 冬天景色作文 桃花源作文 高中作文摘抄 项羽 作文 小猫作文300字 作文这一天 愤怒作文 60字英语作文 榕树作文 初中作文摘抄 梦境作文 作文600字写人