JSP简述

261 阅读5分钟

​本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1、 HTML 和 JSP的区别?【重点】 (1) jsp是动态画面,html是静态画面 动态指的是,网页内容能否因人因时而产生变化 (2) html可以直接用浏览器打开 jsp必须经过服务器编译、翻译才能打开 前提是服务器不能关闭 (3) jsp的底层语言是java html是超文本标记语言

2、 JSP传值方式? (1) 超链接: ? :将目标路径和键值对进行拼接 &:将多个键值对进行拼接 (2) form表单:

     <form action="b.jsp">
	<input type="text" name="aaa" />
	<input type="text" name="bbb" />
	<input type="submit" value="按钮" />
	<button>按钮</button>
     </form>

给表单元素添加name属性,和用户输入的内容形成键值对,用于传值 (form传值要结合submit按钮或button使用)

3、如何接收从JSP中传递出来的参数?【重点】 <% %>:在JSP中使用Java脚本,可以引入Java代码 <%= %>:在JSP中使用Java表达式,可以将Java变量显示在页面上 request.getParameter("键名") --> 返回值类型是String 如何接收jsp中多个同名标签中的参数(如:复选框)? request.getParameterValues("键名") --> 返回值是String数组

4、 GET请求和POST请求的区别?【重点!!!!!】 (1) 超链接只能使用GET请求 form表单可以通过method属性,来指定请求方式(get或post) 如果不指定method,默认是GET请求 (2) GET请求安全性比POST请求低,传递的参数会暴露在地址栏上 (3) GET请求能传递的参数容量比POST请求小

5、 如何解决jsp传值时产生的中文乱码? GET请求: 在server.xml文件中的Connector连接器中,添加URIEncoding=“UTF-8” POST请求: 在doPost方法中加入以下代码:request.setCharaterEncoding("UTF-8");

6、 如何从Java后台跳转到jsp画面?【重点!!!!!】 (1) 重定向: response.sendRedirect("ok.jsp"); (2) 转发: request.getRequestDispatcher("ok.jsp").forward(request, response); 二者之间的区别: 相同点:都能进行跳转 不同点: (1) 利 用request传值时,转发可以传递request中的值,而重定向不能 (2) 重定向跳转成功后,地址栏中会显示目标路径; 转发跳转成功后,地址栏中的路径会停留在后台中 (3) 重定向可以跳转到项目外部资源,转发只能在项目内部进行跳转

7、 如何从Java后台向jsp画面发送数据? 将要发送的数据以键值对的形式装进域对象 域对象.setAttribute("键名", 值[Object]);

  如何在jsp中获取Java后台传来的数据?
域对象.getAttribute("键名");  --> 返回值是Object

8、 什么是Tomcat服务器?【重点!!!!!!】 (1) Tomcat服务器能够将jsp文件翻译成java文件,并调用VM将java文件编译成class文件 (2) Tomcat服务器提供了Servlet所需的类HttpServlet (3) Tomcat服务器提供了Servlet的运行环境,官方说法:Tomcat服务器提供了Servlet容器

9、 什么是Servlet?【重点】 Servlet全称:Server Applet,服务器端程序(运行在服务器中) (广义)是一个Java中的特殊类,继承了Tomcat服务器提供的HttpServlet

10、 jsp和Servlet的区别? jsp的底层语言是Java,是由Servlet编写的 jsp和Servlet没有区别,所以jsp在跳转进入Java时,只能进入Servlet

11、 el表达式? 全称:Expression Language 常用方法如下: ① 从域对象中通过键名取值 例如:域名.teaList域名可以省略底层方法:<从四个jsp域对象中按序检索1.pageContext2.request3.session4.application②判断{域名.teaList } 域名可以省略 底层方法:<%=pageContext.findAttribute("域名")%> 从四个jsp域对象中按序检索 1. pageContext 2. request 3. session 4. application ② 判断 {2 eq 2 } -- 2==2判断是否相等<br>{2 == 2 }判断是否相等<br> {2 ne 2 } -- 2!=3判断是否不相等<br>{2 != 3 }判断是否不相等<br> {2 gt 3 } -- 2>3判断是否大于<br>{2 > 3 }判断是否大于<br> {2 lt 3 } -- 2<3判断是否小于<br>{2 < 3 }判断是否小于<br> {2 ge 3 } -- 2>=3判断是否大于等于<br>{2 >= 3 }判断是否大于等于<br> {2 le 3 } -- 2<=3判断是否小于等于<br>{2 <= 3 }判断是否小于等于<br> {A && B } -- AandB多个条件联合判断{A and B }多个条件联合判断 {A || B } -- ${A or B } ③ 计算 ④ 利用el表达式接到域对象中的实体类对象之后,可以继续.变量名 利用el表达式接到集合或数组之后,可以利用索引[i]获取到其中的某一数据

12、 jstl标签库? jstl全称:JSP Standard Tab Library JSP标准标签库 实现了Web开发中常见的通用功能,如迭代、判断等等 好处:简化了JSP页面的设计,因为Java脚本语言操作动态数据比较困难 采用jstl标签为页面设计人员和程序开发人员提供了便利 1. jar包导入项目 WebContent-->WEB-INF-->lib 2. 在本篇jsp文档中,引入jstl标签库 <%@ taglib prefix="c" uri="java.sun.com/jsp/jstl/co…" %> 3. 使用: ① 判断 <c:if test="2eq3">OK</c:if>②循环<c:forEachvar="tea"items="{2 eq 3 }"> OK </c:if> ② 循环 <c:forEach var="tea" items="{teaList }" varStatus="abc"> abc.count{abc.count } --- {tea.teaName }
</c:forEach>

13、 request域对象和session域对象的区别?【重点!!!!!】 request有效范围:只在一次请求(一次画面的跳转)之内有效 session有效范围:在一次会话(多次画面的跳转)之内有效 一次会话:当客户端连接到服务器,并请求了web资源之后, 直到客户端关闭或服务器停止,叫做一次会话 另:Servlet中的第三个域对象: ServletContext有效范围:只要服务器不停止,就一直有效

14、 Servlet的工作原理?【重点!!!!!!!!!!!!!!】 (1) 实现Servlet接口(服务器提供的) 该接口定义的service方法相当于进入后台的入口 (2) 继承GenericServlet 简化了一些不常用的方法 (3) 继承HttpServlet 将service方法分解成了doGet方法和doPost方法 且遵循了HTTP协议 Servlet(后台)是单例的,而且是多线程的

15、 Servlet的生命周期? 当反复请求到同一个后台时: 构造方法:只有第一次请求时会被执行 init初始化方法:只有第一次请求时会被执行 service业务逻辑方法:请求几次就会被执行几次 destroy终止方法:当服务器刷新时,或服务器被正常关闭时被执行

16、 jsp的静态包含?通过include指令 <%@ include file="head.jsp" %> <%@ include file="foot.jsp" %> 包含文件和被包含文件会被统一翻译成一个.java文件,被统一 编译成一个.class文件,所以在各个jsp中不允许有同名变量的定义

17、 jsp的动态包含?通过jsp:include标签 <jsp:include page="head.jsp"></jsp:include> <jsp:include page="foot.jsp"></jsp:include> 包含文件和被包含文件会被分别翻译成多个.java文件,被分别 编译成多个.class文件,所以在各个jsp中允许有同名变量的定义

18、 jsp内置对象? request、session、response、application、 page、out、config、pageContext、exception

out:可以向客户端写数据(文本、HTML标签等)
exception:用来抓取异常,需要在出现错误的jsp的<%@ page %>指令中,
		添加errorPage="fail.jsp"
	在fail.jsp中的<%@ page %>中,添加isErrorPage="true",
		fail.jsp中可以通过exception对象获取到错误信息
config:获取当前jsp的配置信息
response:相当于Servlet中的HttpServletResponse
page:即当前页面对象,开发中不常用
request:相当于Servlet中的HttpServletRequest
session:相当于Servlet中的HttpSession
application:相当于Servlet中的ServletContext
pageContext:作为域对象传递数据时,有效范围只在当前jsp中
	另:最后四个内置对象可以作为域对象使用

19、 WEB-INF文件夹中的内容是受保护的,不能直接在地址栏中手动输入地址, 或者利用超链接直接跳转,只能通过在项目内部转发的方式来访问 jsp中的内部转发: <jsp:forward page="WEB-INF/bb.jsp"></jsp:forward> Servlet中的内部转发: request.getRequestDispatcher("WEB-INF/bb.jsp").forward(request, response);