-
理解“动”态网站
HTML、CSS、JavaScript(动态效果)——(界面层,运行在客户端浏览器);
Java、SQL、JSP、Servlet——(运行在服务器)
上边老师总结的,不看,看下边的
动态网站指数据是活的,也就是说数据是存在数据库中的,静态网站是指数据就在前端页面上,如果要改静态页面上的数据,就得改代码。静态网站上有种东西叫JavaScript,这个只是搞一些动态效果或者和后端交互数据(Ajax),有这个不叫动态网站。 -
JavaBean
javaBean分为实体JavaBean和业务JavaBean
实现实体的JavaBean,叫做封装数据的JavaBean,俗称实体类(entity)。
实现功能的JavaBean,叫做封装业务的JavaBean,比如dao,biz。
典型的JavaBean,是指封装数据的JavaBean(entity),它的特征:
(1) 必须是public类
(2) 私有成员变量(private)
(3) public的无参构造方法
(4) 围绕每个属相生成set方法和get方法 -
JSP工作原理
第1次执行JSP页面时,经过转译(.jsp->.java)、编译(.java->.class)、执行的过程。
第2次以后再执行时,直接执行.class,这个.class就是Servlet。
例题:
JSP文件在第一次运行的时候被JSP引擎编译为( A )文件
A. Servlet
B. Class
C. HTML
D. XML -
HTTP协议发送消息的方法:get和post
get方法特征:明文传输数据,发送数据大小有限制。<form method="GET"> … </form> <a href="#">…</a> response.sendRedirect("list.jsp?boardId=1");
post方法特征:密文传输数据,发送数据大小没有限制。
<form method="post"> … </form>
post相比get要安全点儿
-
HTTP协议具有"无状态"的特点。
点击超链接<a>
,相当于发起新的HTTP链接,产生一个新的request对象。 -
HTML
<form method="post" action="……"> <input type="text" name="username" id="username"/> <input type="hidden" name="temp" value="123"/> <!--隐藏表单域 --> </form> <a href="next.jsp?a=1&b=2&c=3"></a> <!--下级目录,上级目录,根目录--> <!--下级 直接写 next.jsp--> <!--上级 ../next.jsp--> <!--根目录 /next.jsp--> <!-- URL重写 (重定向)--> response.sendRedirect("list.jsp?boardId=1");
-
JSP指令元素包括:page、include、taglib
(1) jsp中import可以有多个
(2) jsp中的include有两种,一种是静态引入(<%@ include file = frangmentURL%>
),一种是动态引入(<jsp:include page= frangmentURL />
),前者的页面将会直接插入包含该页面中该指令的位置,然后jsp编译器再对合成的文件进行编译,最终编译的页面只有一个;后者的jsp程序将会将请求forward到被包含页面,并将执行结果放入输出至浏览器中,并返回页面继续执行后面的代码,包含文件和被包含文件将会分别编译。简单来说,前者得到一个Servlet,后者得到两个Servlet。
(3) 当jsp页面使用第三方标签库时,使用taglib指令"导包",url是第三方标签库定义的,prefix是标签的前缀,使用这个库里的标签时,前边要加一个前缀。<%@ page import="entity.*,dao.*,java.util.Date" contentType="text/html;charset=utf-8" %> <%@include file="other.jsp"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <c:out value="renliang"></c:out>
-
JSP脚本元素包括:表达式(<%=… %>)、脚本代码(<%… %>)、声明(<%!… %>)
例题:
JSP标记都是以<%
或<jsp
开头,以%>
或/>
结尾。 -
9个内置对象: response、out、request、pageContext、session、application、config、exception、page
常用的:request、response、out、pageContext、session、application
比较作用域范围:pageContext、request、session、application
(1) pageContext:当前页面(默认的作用域)<% pageContext.setAttribute("color","yellow");%> <%=pageContext.getAttribute("color")%> <!--用JSP表达式输出 --> ${pageScope.color} <!--用EL表达式输出 --> <c:forEach item="list" var="obj"> <!—obj默认是定义在pageContext内置对象中 --> …${obj.attr} </c:forEach>
(2) request:当次HTTP链接中
String变量名 = request.getParameter("变量名"); request. setAttribute("变量名",值); request. getAttribute("变量名");
(3) session:当前会话中(只要不注销session即关闭浏览器)
如果当前已展开会话,就返回当前session对象;如果当前没有session,创建一个新的session对象:HttpSession session = request.getSession(); HttpSession session = request.getSession(true);
如果当前已展开会话,就返回当前session对象;如果当前没有session,返回null:
HttpSession session = request.getSession(false);
(4) application:整个应用程序(所有页面、所有会话,只要服务器不关)
一般用于计数的
例题:
request内置对象代表了客户端的请求信息,主要用于通过HTTP协议传送给服务端的数据。out对象主要用来向客户输出各种数据类型的内容。
page对象用于指定当前JSP本身。
pageContext对象提供了对JSP页面内使用到的所有对象及名称空间的访问。
application对象保存应用程序中公有的数据。
response对象实现了HttpServletResponse接口,可对客户的请求作出动态响应,向客户端发送数据。
如果希望在多个页面间共享数据,可以使用(A)作用域
A. request,session
B. application.session
C. request,application
D. pageContext,request -
页面跳转的两种方式:重定向和转向的区别
重定向:response.sendRedirect("index.jsp");
相当于发起新的HTTP链接;
地址栏会发生变化;
效率低;
安全性较高。
转向:request.getRequestDispatcher("index.jsp").forward(request,response);
不发起新的HTTP链接,服务器内部资源的跳转;
地址栏不变化;
效率较高。 -
EL表达式支持关键字:eq、ne、lt等等、empty
算数运算符 描述 ( ) 括号,改变运算优先级 - 负号 *,/(div),%(mod) 乘除取余,若除以0,返回值为无穷大而不是错误 +,- 加减 关系运算符 说明 范例 结果 ==或eq 等于 ${5==5}或${5eq5} true !=或ne 不等于 ${5!=5}或${5ne5} false <或lt 小于 ${3<5}或${3lt5} true >或gt 大于 ${3>5}或${3gt5} false <=或le 小于等于 ${3<=5}或${3le5} true >=或ge 大于等于 ${3>=5}或${3ge5} false 逻辑运算符 范例 &&或and ${A && B}或${A and B} ||
或or${A ||
B}或${A or B}!或not ${!A}或${not A} empty主要判断值是否为空
${empty A}
条件运算符 ${A?B:C}
例题:
EL表达式,${10 mod 3}的执行结果为( B )
A. 10 mod 3
B. 1
C. 3
D. null -
EL表达式与JSP表达式区别:
EL表达式取出一个变量的值时,要求这个变量必须来自某个内置对象中;<!--name 必须来自pageScope、requestScope、sessionScope或applicationScope作用域--> ${name}
JSP表达式取出一个变量的值时,这个变量是一个局部变量;
<%=name%>
EL表达式,如果表达式结果为NULL,不会有任何显示;
JSP表达式,如果表达式结果为NULL,显示NULL。
给定以下JSP代码片段,有2个客户依次浏览该JSP;且每个客户只浏览一次,第2个客户会看到浏览器显示(A)<% int x = 1; %> <%! int x = 10; %> X = <%=x %>
A. x = 1
B. x = 2
C. x = 10
D. x = 11 -
JSTL标签:Core库和Format库
Core库:<c:if test="${}">…</c:if> <c:choose> <c:when test="${}"> …. </c:when> <c:otherwise> …. </c:otherwise> </c:choose> <c:forEach item="${list}" var="obj" > …${obj.attr} </c:forEach>
Format库:格式化日期或数字,本地化和国际化
<fmt:formatNumber />、<fmt:formatDate>
-
Servlet的理解
Servlet继承javax.servlet.http.HttpServlet类。
HttpServlet是抽象类,它的Http处理方法只有定声明没有具体实现。
开发Servlet类,一般需要重写**doGet( )或doPost( )**方法。
例题:
Servlet的优点有(ABC)
A. 执行效率高
B. 可移植性好
C. 功能强大
D. 运行速度快
Servlet和JSP的区别是(BCD)
A. 性能更强
B. 编程方式不同
C. 运行速度不同
D. 编译顺序不同 -
Servlet的访问:web.xml中配置
<servlet> <servlet-name>firstServlet</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>firstServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
-
Servlet的生命周期:
加载类实例化
init()初始化
请求处理
destroy()
第1次访问某Servlet时,会调用init()方法;
之后访问Servlet的doGet()或doPost()方法;
关闭服务器时候,会调用destroy()方法。
例题:
当访问一个Servlet时,以下Servlet中的哪个方法先被执行( D )
A. destroy
B. doGet()
C. service()
D. init() -
session对象是HttpSession接口类型;application对象是ServletContext接口类型。
-
过滤器
<filter> <filter-name> EncodingCharacterFilter </filter-name> <filter-class> filter. EncodingCharacterFilter </filter-class> </filter> <filter-mapping> <filter-name> EncodingCharacterFilter </filter-name> <url-pattern>/admin/*</url-pattern > </filter-mapping>
例题:
编写一个filter,需要( B )
A. 继承Filter类
B. 实现Filter接口
C. 继承HttpFilter类
D. 实现HttpFilter接口
在编写过滤器时,需要完成的方法(A)
A. doFilter()
B. doChain()
C. doPost()
D. doDelete() -
Model1和Model2模型对比
Model1是JSP+JavaBean
Model2是JSP+Servlet+JavaBean
Model1中,JSP页面独自响应请求,并将处理结果返回客户端,所有的数据通过Bean来处理,JSP页面显示数据。Model实现了视图层和业务层的分离。大量Model1会使JSP页面嵌入大量脚本代码,使整个页面程序变得很复杂,造成了代码开发和维护的困难。
Model2中,通过JSP页面显示数据,通过Servlet完成大量的事务处理工作。这样的话,JSP页面中没有任何数据处理逻辑,所有数据处理逻辑均出现在Servlet中。Model2具有更清晰的页面表现、清楚的开发者角色划分,做到了基本的前后端分离。
例题:
JSP的两种体系结构是model1和model2
补充:
- 能够保留请求作用域中数据的转向方式是(D)
A. response.forward()
B. response.sendRedirect()
C. session.getRequestDispatcher().forward(request,response)
D. request.getRequestDispatcher().forward(request,response) - Login.jsp为登录页面,表单代码如下:
<form action="index.jsp" method="post"> <input type="text" name="name" /> <input type="submit" value="login" /> </form>
- index.jsp中直接显示用户名,以下哪种代码正确(C)
A. ${requestScope.name}
B. <%=name %>
C. ${param.name}
D. <%=param.name%> - 按作用域从大到小排列正确的是(D)
A. application,page,request,response
B. session,pageContext,request,application
C. public,application,session,request
D. application,session,request,pageContext - 在编写Servlet时,需要继承HttpServlet类,在Servlet中声明doGet()和doPost()需要HttpServletRequest和HttpServletResponse类型的两个参数
- jsp主要内置对象有:response、exception、pageContext、request、session、application、out、config、page
- 使用useBean动作标记的时候scope属性有4种选项,作用范围由小到大是pageContext、request、session、application,其中session是指当关闭浏览器的时候这个javabean失效,application是指当关闭服务器的时候这个javabean失效。
- 三种常用的动态网页技术是ASP,PHP,JSP
- JSP利用JDBC操作数据库的步骤:
(1) 加载驱动程序,调用 Class.forName()将自动加载驱动程序类。
(2) 建立连接,若连接字符串为String url = "jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPwd
,其中dbName、userName和userPwd3个分别代表数据库名、数据库的用户名和密码
(3) 建立StateMent
(4) 执行sql语句,其中,查询数据库里的表内容是Statement接口使用**executeQuery()**方法
(5) 关闭数据库
题目来自百度文库:https://wenku.baidu.com/view/0620ecafd1d233d4b14e852458fb770bf78a3b8a.html和https://www.doc88.com/p-645858552264.html