jsp和servlet常见问题总结

java知识总结大全 专栏收录该内容
10 篇文章 0 订阅

四、jsp/servlet部分

1、Tomcat的优化经验

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

2、Tomcat根目录下有哪些文件

1)config 配置文件存放的路径
2)webapps 项目部署的目录
3)bin tomcat运行需要的脚本与jar包的目录
4)lib 运行项目时所需要的jar包的目录
5)work 部署项目的缓存目录
6)temp 临时文件存放的目录
7)logs 记录日志的目录

3、什么是TOMCAT,怎样启动停止,配置文件,日志文件的存储。

xtomcat其实是一种web服务器,java编写的web项目可以部署在其上,用户在客户端请求时,都是先将请求发送到tomcat上,tomcat再将请求发送到对应的项目上。
启动tomcat
在Windows下:进入bin目录,双击startup.bat
在Linux下:cd进入bin目录,sh startup.sh
在开发工具eclipse中,右键选择Debug Server或者Run Server
停止tomcat
在Windows下:进入bin目录,双击shutdown.bat
在Linux下:cd进入bin目录,sh shutdown.sh
在开发工具eclipse中,选择服务器stop Server
配置文件在tomcat的config文件夹下
日志文件在logs文件夹下

4、解释一下什么是servlet;什么是servlet容器;

在web容器中运行的服务器端java程序,主要用于响应HTTP请求。Servlet一般用于mvc中的控制器部分。
用来管理servlet生命周期的应用程序如(tomcat webloc等)

5、说一说Servlet的生命周期,执行过程?

Servlet生命周期分为实例化、初始化、响应请求调用service()方法、消亡阶段调用destroy()方法。
执行过程如下:
1)当浏览器发送一个请求地址,tomcat会接收这个请求
2)tomcat会读取项目中的web.xml中的配置
3)当请求地址符合servlet-mapping标签映射的地址,会进入这个servlet
4)servlet首先会实例化(构造),然后初始化执行init()方法,init()方法至始至终执行一次,servlet对象是单实例
5)根据请求的方式是get或post,在service()方法中调用doget()或dopost()方法,完成此次请求
6)当服务器停止,会调用destroy()方法,销毁实例

6、实例化servlet有几种方式

Servlet实例化有两种,如下:
  1. 第一次请求时,实例化servlet对象
2)在web.XML文件中的<Servlet></Servlet>之间添加<loadon-startup>1</loadon-startup>,tomcat启动时就会实例化servlet对象

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

Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下:
    1)Get是用来从服务器上获得数据,而Post是用来向服务器上传数据;
    2)Get将表单中数据按照variable=value的形式,添加到action所指向的URL后面,并且两者使用
?连接,而各个变量之间使用&
连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL;
    3)Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的;
    4)Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post;
    5)Get限制Form表单的数据集必须为ASCII字符,而Post支持整个ISO10646字符集;
    6)Get是Form的默认方法。

8、请写一个Servlet的基本架构。

public class ServletName extends HttpServlet {
        public void doPost(HttpServletRequest request,
                           HttpServletResponse response)
                           throws ServletException, IOException {
        }
        public void doGet(HttpServletRequest request,
                           HttpServletResponse response)
                           throws ServletException, IOException {
        }
    }

9、forward 和redirect的区别?

forward是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
总结:forward是程序内部跳转,不会跳出tomcat服务器,redirect可以外部跳转,从一个服务器跳转到另一个服务器。

10、servlet中怎么定义forward 和redirect

转发:request.getRequestDispatcher (“demo.jsp"). forward(request, response);
重定向:response.sendRedirect(“demo.jsp");

11、过滤器有哪些作用?

可以验证客户是否来自可信的网络,可以对客户提交的数据进行重新编码,可以从系统里获得配置的信息,可以过滤掉客户的某些不应该出现的词汇,可以验证用户是否登录,可以验证客户的浏览器是否支持当前的应用,可以记录系统的日志等等。

12、JSP的常用指令?

  <%@page language=java contenType=text/html;charset=gb2312 session=true buffer=64kb autoFlush=true isThreadSafe=true info=text errorPage=error.jsp isErrorPage=true isELIgnored=true pageEncoding=gb2312 import=java.sql.*%>
isErrorPage:是否能使用Exception对象;isELIgnored:是否忽略EL表达式;
<%@include file=filename%>
<%@taglib prefix=curi=http://……”%>

13、JSP和Servlet中的请求转发分别如何实现?

JSP中的请求转发可利用forward动作实现:<jsp:forward />;
Serlvet中实现请求转发的方式为:
getServletContext().getRequestDispatcher(path).forward(req,res)。

14、JSP乱码如何解决?

  1)JSP页面乱码
  <%@ page contentType=text/html ; charset=utf-8%>
  2)表单提交中文时出现乱码
如果是post请求:  request.setCharacterEncoding(utf-8);
如果是get请求:可以通过编码再解码的方法
public class TestCodeCast {
          public static void main(String[] args) {
                   String messageString="创新二路";
                   String s1 =URLEncoder.encode(messageString);//编码
                   System.out.println(s1);
                   //%E5%88%9B%E6%96%B0%E4%BA%8C%E8%B7%AF
                   String s2 =URLDecoder.decode(s1);//解码
                   System.out.println(s2);
                   //创新二路
          }
}

     
  3)数据库连接出现乱码
  是数据库连接中加入useUnicode=true&characterEncoding=utf-8;

15、session 和 application的区别?

1)两者的作用范围不同:
Session对象是用户级的,而Application是应用程序级别的
一个用户一个session对象,每个用户的session对象不同,在用户所访问的网站多个页面之间共享同一个session对象
一个Web应用程序一个application对象,每个Web应用程序的application对象不同,但一个Web应用程序的多个用户之间共享同一个application对象。
两者的生命周期不同:
session对象的生命周期:用户首次访问网站创建,用户离开该网站 (不一定要关闭浏览器) 消亡。
application对象的生命周期:启动Web服务器创建,关闭Web服务器销毁。

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

JSP共有以下9种基本内置组件
  request:用户端请求,此请求会包含来自GET/POST请求的参数;
   response:网页传回用户端的回应;
   pageContext:网页的属性是在这里管理;
   session:与请求有关的会话期;
   application:servlet正在执行的内容;
   out:用来传送回应的输出;
   config:servlet的构架部件;
   page:JSP网页本身;
   exception:针对错误网页,未捕捉的例外

17、Jsp有哪些动作?作用分别是什么?

JSP共有以下6种基本动作
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

18、JSP中动态INCLUDE与静态INCLUDE的区别?
动态INCLUDE用jsp:include动作实现,<jsp:include page=included.jsp flush=true />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 ,先将嵌入的jsp页面编译和主页进行编译然后再包含,编译两次。
静态INCLUDE用include伪码实现,使用jsp指令引用<%@ include file=included.htm %>,不会检查所含文件的变化,适用于包含静态页面,先将内容先包含到主页面然后在一起编译,只编译一次。

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

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

20、页面传递对象的方法?

Request、session、application、cookie等

21、Cookied和session区别?

1)cookie数据存放在客户的浏览器上,session数据放在服务器上。
2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。
3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。
4)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。  
  • 2
    点赞
  • 0
    评论
  • 4
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页

打赏作者

萧十一郎XA

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值