jsp&servlet相关面试题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/panhaigang123/article/details/79627587
Servlet的生命周期
        1、创建servlet实例(创建对象)  默认在第一个请求到来的时候创建(也可以设置成加载就初始化)
        2、初始化(init())  初始化参数
        3、调用service() 执行doGet()  doPost()
        4、调用destroy() 销毁  比如应用重新加载、或服务器关闭
        
get提交和post提交的区别
        get一般用于从服务器上获取数据 post一般往服务器上推送数据
        请求的参数的位置不同 
                get的参数是拼接在url后 在浏览器地址栏可见
                post是放在HTTP包的包体中
        post相对于get来说是比较安全的
        能提交的数据的区别
                get只能提交的数据只能是文本,且大小不能超过1024个字节
                post不仅可以提交文本还可以提交二进制文件
        servlet对他们的处理不同
                get是进入doGet()方法
                post是进入doPost()方法
                
jsp与servlet的区别
        jsp的本质就是一个servlet 他会被容器转化成servlet,在编译成class文件  调用_jspService()处理请求
        jsp注重的是页面展示     servlet注重的是流程控制和事务处理
        
doPost与doGet方法中的两个参数是什么
        HttpServletRequest:封装了与请求的相关的信息
        HttpServletResponse:封装了与响应相关的信息
        
request.getAttribute()和request.getParameter()
        request.getAttribute()
                有setAttribute()方法
                只能获取setAttribute()里的值
                getAttribute获取到的是object类型
                当在一个页面通过setAttribute()设入一个对象,请求转发到另一个页面是可以通过getAttribute()取出设入的对象
                        当然也可以使用session 只是session和request的生命周期是不一样的
        request.getParameter()
                没有setParameter()方法
                可以获取form表单或者是url向另一个页面或者是servlet传递参数的数据
                获取的只能是字符串
                
jsp有哪些内置对象,作用是什么
        request====》包含了用户端请求的的信息
        response=====》包含服务器传回客户端的响应信息
        session======》解决了http协议的无状态性 在服务器中保存了用户的会话信息(用来判断用户是否登录,购物车功能)cookie保存在客户端
        pageContext======》由容器来创建对象和初始化 管理页面上下文 通过pageContext可以获取out、request、reponse、session、application等对象
        application======》可以实现应用程序的资源共享
        out=========》向客户端输出数据
        config=======》用于存放jsp编译后的初始化数据(服务器的配置信息)
        page=======》jsp页面本身  在当前jsp有效
        exception======》显示异常信息 只有在包含了page指令中设定isErrorPage="true"的页面才能使用
        
四种会话作用域
        page:当前页面
        request:一次请求中
        session:一次会话中
        application:服务器从启动到停止

jsp中动态包含和静态包含
        动态包含
                动态包含使用<jsp:include page="head.jsp"> 使用page属性实现  在body标签中使用 <jsp:include page="head.jsp"></jsp:include>
        静态包含
                静态包含使用<%@include file="head.jsp"%> 使用file属性实现   在body标签中使用 <%@include file="head.jsp"%>
        原理不同
                静态包含直接将jsp的内容嵌入到访问的jsp 简单的理解就是将两个jsp的代码写在一起
                动态包含将两个jsp分别翻译成不同是servlet 将包含的servlet输出的内容包含(发送了一个请求给被包含的页面 获取到了响应的html
                        当向这个页面发出请求后,会转发到被包含的那个jsp页面去执行,执行完毕后接着执行本页面的代码)
        
forward和redirect的区别
                请求的次数不同
                        请求转发:1次
                        重定向:2次
                跳转的方式不同
                        请求转发:服务器内部跳转 浏览器不知
                        重定向:告知浏览器 发生二次跳转
                地址不同
                        请求转发:地址不变
                        重定向:变化为第二次地址
                参数不同
                        请求转发:参数保留
                        重定向:参数失去
                跨域访问不同
                        请求转发:只能在同一个项目跳转
                        重定向:可以跨域访问
                效率上
                        请求转发:效率高
                        重定向:效率低
                        
jsp的常用的动作指令和作用
        jsp:include====》在页面被请求的时候引入一个包含
        jsp:useBean====》实例化一个对象
        jsp:setProperty=====》设置对象的属性
        jsp:getProperty=====》获取对象的属性
        jsp:forward=====》请求转发
        
        
jsp的3中跳转方式
        response.sendRedirct()  重新发送请求
        response.setHeader()  重新发送请求但可以设置等待的时间
        <jsp:forward page="跳转的页面"> 请求转发 服务器的跳转
        
servlet过滤器的作用《取你所想取》
        在请求到达servlet之前,执行过滤器,过滤器决定是否执行(可以进行权限控制) 可以提前设置一些参数(比如在执行action前设置统一字符集)
         =======拦截器《拒你所想拒》======
        当你在执行一个方法,在这个方法前或方法后执行一些方法 (防止重复提交)
servlet监听器的作用
        对特定的事件进行监听,当产生这些事件的时候,会执行监听器的代码 分为生命周期监听器和数据变化监听器
                (统计在线人数(监听session)、网站的访问量(request))


描述jstl
        jstl是一个jsp标签集合,他封装了jsp应用的核心功能,比如核心标签(core) 格式化标签(fmt) 函数(fn)
                jstl还提供了实现自定义标签功能   方便我们的页面控件编写

实现servlet单线程模式
        jsp修改page指令 <%@ page isThreadSafe="fase"%> 此时编译成的servlet实现了SingleThreadModel接口


介绍el表达式
        el表达式一般操作的是作用域(application session request page)中的属性 获取上下文${pageContext.request.contextPath} 使用${}

tomcat如何调优
        对tomcat内存进行优化(修改catalina.bat的相关参数)
        禁用DNS查询(直接使用IP地址访问)
        修改最大线程连接数
        设置超时机制

tomcat部署的方式有几种
        1、可以将web项目文件拷贝到webapps目录中
        2、在tomcat中的conf目录下修改server.xml文件  在host节点中添加<Context>标签 并指向项目所在路径
        3、可以在tomcat中conf\Catalina\localhost 目录下添加一个xml文件 文件名可以随意取  并写入一个<Context>标签 并指向项目所在路径

猜你喜欢

转载自blog.csdn.net/panhaigang123/article/details/79627587