jsp期末复习资料

jsp期末复习

一,HTML常用标签

1.表格
<br/>换行
<table>
    <tr>
    	<th>表格标题</th>
    </tr>
    <tr>
    	<td>子内容</td>
    </tr>
</table>

2.表单
<form>
    <input type="checkbox"/>
    <input type="reset"/>
    <select>
        <option>1</option>
        <option>1</option>
        <option>1</option>
    </select>
</form>

二.JDBC

1.数据库连接
//Class.forName(driverClass)加载驱动
Class.forName("com.mysql.jdbc.Driver")//加载MySql驱动
//this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);获取连接
this.conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/数据库名字", "root", "root")
Statement st = conn.createStatement();//创建预处理对象
sql="sql语句"
------------------------------------------------------------------------------------------
ResultSet rs = st.executeQuery(sql);//执行sql语句查询
while(rs.next()){
    System.out.println(rs.getString("user_name")+" 年龄:"+rs.getInt("age"));
}//获取数据
----------------------------------------------------------------------------------------
ResultSet rs = st.executeUpdate(sql);//执行增删改
------------------------------------------------------------------------------------------
String sql = "INSERT INTO imooc_goddess(user_name, sex, age, birthday, email, mobile,"+
            "create_user, create_date, update_user, update_date, isdel)"
                +"values("+"?,?,?,?,?,?,?,CURRENT_DATE(),?,CURRENT_DATE(),?)"; //预编译
ptmt.setString(1, g.getUser_name());//传参,下标从1开始代表第几列
ptmt.setInt(2, g.getSex());
ptmt.setInt(3, g.getAge());
ptmt.setDate(4, new Date(g.getBirthday().getTime()));
PreparedStatement ptmt = conn.prepareStatement(sql); //预编译SQL,减少sql执行
ResultSet rs = ptmt.executeUpdate();//执行增删改
---------------------------------------------------
while(rs.next){
    rs.getInt("age")
}//执行查询
2.数据库事务
con.setAutoCommit(false);//设置事务自动提交
con.commit() ; //手动提交
con.rollback()//事务回滚

三.JSP及Servlet运行环境搭建

1.tomcat
Tomcat缺省端口号:8080
Tomcat目录结构:
bin目录主要是用来存放tomcat的命令。如startup.bat 启动tomcat;shutdown.bat关闭tomcat
conf目录主要存放tomcat的一些配置文件。如server.xml文件可以配置端口号、IP、域名等
lib目录主要用来存放tomcat运行时需要加装的jar包;
logs目录bin目录主要是用来存放tomcat的命令;
temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)
webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。
work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。 
清空work目录,然后重启tomcat,可以达到清除缓存的作用
2.projext目录结构
  • WEB-INF :存放jsp,html等页面
  • src:存放java源码
  • lib:存放jar包
  • web.xml:配置web
3.JSP 的Model1 和 Model2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GFzHmbms-1608017510202)(D:\tim截图\jsp\图片1.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NjC2o6Iu-1608017510204)(D:\tim截图\jsp\图片2.png)]

四.JSP基本动态技术元素

1.jsp表达式

一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。

表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。

JSP表达式的语法格式:

<%= 表达式%>

与之等价的XML语句:

<jsp:expression>
   表达式
</jsp:expression>
2.声明

一个声明语句可以声明一个或多个变量、方法和类,供后面的Java代码使用。在声明中定义的变量、方法和类,将成为JSP对于servlet类的成员变量、成员方法和内部类。

JSP声明的语法格式:

<%! declaration; [ declaration; ]+ ... %>

或者,您也可以编写与其等价的XML语句,就像下面这样:

<jsp:declaration>
   代码片段
</jsp:declaration>
3.脚本

脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。

脚本程序的语法格式:

<% 代码片段 %>

或者,您也可以编写与其等价的XML语句,就像下面这样:

<jsp:scriptlet>
   代码片段
</jsp:scriptlet>

五.JSP指令

JSP指令语法格式:

<%@ directive attribute="value" %>
1.page指令

一个JSP页面可以包含多个page指令;page指令可以放在页面的任意位置,一般放在开始位置。

语法格式:

<%@page 属性名1=“属性值1” [... 属性名n=“属性值n”]%>
或者
<jsp.directive.page 属性名1=“属性值1” [... 属性名n=“属性值n”]/>

主要作用:导入java类

主要属性:

  • buffer:指定out对象使用缓冲区的大小
  • contentType: 指定当前JSP页面的MIME类型和字符编码
  • errorPage: 指定当JSP页面发生异常时需要转向的错误处理页面
  • isErrorPage: 指定当前页面是否可以作为另一个JSP页面的错误处理页面
  • extends:指定Servlet从哪个类继承
  • import:导入要使用的类
  • isELIgnored:是否执行EL表达式
2.include指令

JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。

语法格式:

<%@ include file="文件相对 url 地址" %>
或者
<jsp:directive.include file="文件相对 url 地址" />
3.taglib指令

Taglib指令引入一个自定义标签集合的定义

Taglib指令的语法:

<%@ taglib uri="uri" prefix="prefixOfTag" %>
或者
<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />

六.jsp动作

与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用

动作元素只有一种语法,它符合XML标准:

<jsp:action_name attribute="value" />
1.jsp:include动作

jsp:include动作元素用来包含静态和动态的文件。(动态)

语法格式:<jsp:include page="相对 URL 地址" flush="true" />
2.jsp:useBean动作

加载一个将在JSP页面中使用的JavaBean

语法格式:<jsp:useBean id="name" class="package.class" scope=”page|request|session|application”/>
3.jsp:setProperty动作

jsp:setProperty用来设置已经实例化的Bean对象的属性,有两种用法。

你可以在jsp:useBean元素的外面(后面)使用jsp:setProperty,

<jsp:setProperty name="myName" property="someProperty" .../>

第二种用法是把jsp:setProperty放入jsp:useBean元素的内部

<jsp:useBean id="myName" ... >
...
   <jsp:setProperty name="myName" property="someProperty" [value=””, param=””]/>
</jsp:useBean>
4.jsp:getProperty动作

jsp:getProperty动作提取指定Bean属性的值,转换成字符串,然后输出

语法格式:<jsp:getProperty name="myName" property="someProperty" .../>
5.jsp:forward动作

jsp:forward动作把请求转到另外的页面。

语法格式如下所示:

<jsp:forward page="相对 URL 地址" />
6.jsp:plugin动作

jsp:plugin动作用来根据浏览器的类型,插入通过Java插件 运行Java Applet所必需的OBJECT或EMBED元素。如果需要的插件不存在,它会下载插件,然后执行Java组件。 Java组件可以是一个applet或一个JavaBean。

七.JSP隐式对象(9个)

1.request
request对象是javax.servlet.http.HttpServletRequest 类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。

主要方法:getCookies() ,getParameter(), getParameterValues(),getServletPath(),getAttribute(),setAttribute(),getSession( ),getQueryString( ),getHeader( ),getRequestURL( ),getRemoteHost( ),getRemotePort( ),getRemoteAddr()
2.response
response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。
主要方法:addCookie() ,sendRedirect(), setContentType(),sendError()
3.out
**out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。**

**主要方法: out.print;  out.println;  out.flush**
4.session
session对象是 javax.servlet.http.HttpSession 类的实例。用来跟踪在各个客户端请求间的会话。**

主要方法:getAttribute() getId() getAttributeNames() getCreateTime() getMaxInactiveInterval() setAttribute()invalidate() isNew()
5.application
application对象直接包装了servlet的ServletContext类的对象,是javax.servlet.ServletContext 类的实例。通过向application中添加属性,当前应用中的所有JSP、Servlet中均能访问到。

主要方法:getAttribute(),setAttribute()
6.config
config对象是 javax.servlet.ServletConfig 类的实例,直接包装了servlet的ServletConfig类的对象。这个对象允许开发者访问Servlet或者JSP引擎的初始化参数。
主要方法:getServletContext() getServletName() getInitParameter() getInitParameterNames()
7.pageContext
pageContext类的实例,提供对JSP页面所有对象以及命名空间的访问。pageContext对象是javax.servlet.jsp.PageContext 类的实例,用来代表整个JSP页面。

这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。

主要方法:forward() getAttribute() getException() getRequest() getResponse() getServletConfig() getSession() getServletContext() setAttribute() removeAttribute()
8.page
在当前页面中,类似于Java类中的this关键字
9.Exception
Exception类的对象,代表发生错误的JSP页面中对应的异常对象

八.JavaBean

1.javaBean编写规范
1) 具有一个不带参数的构造器(默认)

2) 不应该有公共的(public)的数据成员

3) Bean中的信息通过getXxx() 和setXxx()方法进行设置和读取。一个属性同时有get和set方法,则该属性时可读写的;一个属性只有get方法,则该属性是只读的。一个属性只有set方法,则该属性是只写的。

九.共享数据

1. 理解JSP的四种作用域范围
pageContext、request、session、application。 
也是四个隐含对象。
使用setAttribute、getAttribute、removeAttribute来操作其范围内的数据。
2.会话(Session)管理
可用于维护会话信息的技术有:隐藏表单字段、URL重写、Cookie、Servlet会话API(session)。

十.Servlet基础

1.Servlet的开发步骤
1) 编写Servlet代码
继承HttpServlet,根据需要重写doGet和doPost方法
2) 在服务器部署Servlet代码
将Servlet类编译成class文件,复制编译完成的class文件到Web应用程序的WEB-INF\classes目录下,
3) 在web.xml文件中配置Servlet。如下:
<servlet-mapping>
	<servlet-name>HelloWorld</servlet-name>
	<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
<servlet>
	<servlet-name>HelloWorld</servlet-name>
	<servlet-class>edu.just.HelloWorld</servlet-class>
</servlet>
2.Servlet工作流程
1)如果是第一次请求Servlet:	a. 加载Servlet类;	b.实例化Servlet类;	c.  调用init方法,传递ServletConfig对象。
2)如果不是第一次请求,调用Service方法传递请求和相应对象,Service方法内部更加请求类型分别调用doGet或者doPost或者doPut等等方法。
3)Web容器在需要删除servlet时调用destroy方法,例如:在停止服务器或取消部署项目时
3.Servlet生命周期
Servlet的生命周期方法有:init(),service()和distroy(),分别是Web容器在servlet初始化、收到客户机请求时以及从服务中删除的时候调用的。
4.Web容器如何处理servlet请求
1)将请求与web.xml文件中的servlet进行映射。
2)为请求创建请求和响应对象
3)调用线程上的service方法
4)公共service方法,内部调用受保护的service方法
5)受保护的service方法根据请求的类型调用doGet或doPost等方法。
6)doGet等方法生成响应,并将其传递给客户端。
7)发送响应后,Web容器将删除请求和响应对象。线程包含在线程池中或删除取决于服务器

十一.特殊的Servlet-过滤器

1.过滤器基本概念
1)Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。
2)可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet。Servlet 过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面
3)过滤器的应用场景
a. 身份验证过滤器(Authentication Filters)。
b. 数据压缩过滤器(Data compression Filters)。
c. 加密过滤器(Encryption Filters)。
d. 触发资源访问事件过滤器。
e. 图像转换过滤器(Image Conversion Filters)。
f. 日志记录和审核过滤器(Logging and Auditing Filters)。
g.  MIME-TYPE 链过滤器(MIME-TYPE Chain Filters)。
2. 过滤器开发步骤
2.过滤器生命周期方法
1) public void doFilter (ServletRequest, ServletResponse, FilterChain)
该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain用户访问后续过滤器。
2) public void init(FilterConfig filterConfig)
web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作(filter对象只会创建一次,init方法也只会执行一次)。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。
3)public void destroy()
Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。
3. 过滤器的开发过程
1)编写Filter类,实现Filter接口,public class LogFilter implements Filter
2)根据需要覆盖方法init、doFilter和destroy方法。在doFilter方法中,注意调用chain.doFilter,让请求继续向后传递。
3)web.xml中配置过滤器,使用<filter>、<filter-mapping>等标签。
4. 使用多重过滤器
1)可以定义多个过滤器
2)过滤器的顺序按照<filter-mapping>定义的顺序

十二.监听器

1.监听Context、Request、Session对象的创建和销毁。
1)ServletContextListener:监听context对象的创建和销毁。其中有方法contextInitialized(ServletContextEvent sce)和contextDestroyed(ServletContextEvent sce)
2)HttpSessionListener:监听session对象的创建和销毁。其中的方法是sessionCreated(HttpSessionEvent se) 和sessionDestroyed(HttpSessionEvent se)
3)ServletRequestListener:监听request对象的创建和销毁。其中有方法requestInitialized(ServletRequestEvent sre)和requestDestroyed(ServletRequestEvent sre)
2. 监听Context、Request、Session对象属性的变化,当向被监听对象中添加、更新、移除属性时,会分别执行attributeAdded()、attributeReplaced()、attributeRemoved()方法。
1)ServletContextAttributeListener
2)ServletRequestAttributeListener
3)HttpSessionAttributeListener
3. 监听Session内部的对象,不需要再web.xml中配置
   1)HttpSessionActivationListener:实现了HttpSessionActivationListener接口的JavaBean对象可以感知自己被活化(反序列化)和钝化(序列化)的事件。 当绑定到HttpSession对象中的JavaBean对象将要随HttpSession对象被钝化**(序列化)**之前,web服务器调用该JavaBean对象的sessionWillPassivate(HttpSessionEvent event) 方法。这样JavaBean对象就可以知道自己将要和HttpSession对象一起被序列化(钝化)到硬盘中。当绑定到HttpSession对象中的JavaBean对象将要随HttpSession对象被活化**(反序列化)**之后,web服务器调用该JavaBean对象的sessionDidActive(HttpSessionEvent event)方法。这样JavaBean对象就可以知道自己将要和HttpSession对象一起被反序列化(活化)回到内存中。
2)HttpSessionBindingListener:实现了HttpSessionBindingListener接口的JavaBean对象可以感知自己被绑定到Session中和从Session中删除的事件。当对象被绑定到HttpSession对象中时,web服务器调用该对象的valueBound(HttpSessionBindingEvent event)方法。当对象从HttpSession对象中解除绑定时,web服务器调用该对象的valueUnbound(HttpSessionBindingEvent event)方法。

4. 上面1,2监听器需要在web.xml中进行配置
	1) 使用<listener>和<listener-class>元素进行注册
	2) <listener>一般配置在 <servlet>标签的前面

十三.Cookie

1. Cookie是应用服务器为跟踪所有用户而在客户机浏览器上存储的小型文本文件。
2. 作用
3. Cookie类上的方法
	1) 构造方法: Cookie(String key,String value);
	2)  public String getName( )
	3)	public void setMaxAge(int expiry) ; //参数单位“秒”,设置参数为0,将删除该Cookie
	4)	public int getMaxAge()
	5)	public void setValue(String value)
	6)	public String getValue()

十四.错误处理

1. Servlet API在javax.servlet包里面定义了2个Exception类,分别是ServletException和UnavailableException。后面一个是前面一个的子类。
2. 错误消息和状态代码
(1) javax.servlet.http包的HttpServletResponse类定义了表示状态代码的各个字段。
(2) 状态代码在逻辑上可以分为以下5个类别:
①信息:包括101,100;
②成功:包括200,202;
③重定向:包括301,302;
④客户机错误:包括401,404,405,410;
⑤服务器错误:包括500,501。
3 HttpServletResponse对象的两个可用于向客户机发送错误和状态信息的方法是sendError()和setStatus()。
4. 自定义错误页面:可以定义自己的错误页面来显示异常和错误信息。
   1)设置错误处理页面: 用page指令的 isErrorPage=”true”
   2)为当前JSP页面指定错误处理页面: 用page指令的errorPage属性,如 errorPage=”xxx.jsp”
5. 在Web.xml中配置配置错误页面
	1) 根据错误代码配置
        <error-page>
        	<error-code> 404</error-code>
			<location>/my404.jsp</location>
        </error-page>
2) 根据错误类型配置
		<error-page>
        	<exception-type> edu.just.jsp.ExceptionA</exception-type>
			<location>/ExceptionA.jsp</location>
        </error-page>

十五.EL表达式

1. EL表达式:EL可以在JSP标记内部使用运行时表达式。语法如下: 
${expression};
其中,字符$和{是标志JSP页面中的EL表达式的开始得特殊字符。如果要使用这些字符则需要使用"\"进行转义。

2. EL表达式可以访问的对象 
(1) JavaBean组件中存储的应用程序数据
(2) 隐式对象;
pageContext	对应于JSP页面中的pageContext对象
pageScope	代表page域中用于保存属性的Map对象
requestScope	代表request域中用于保存属性的Map对象
sessionScope	代表session域中用于保存属性的Map对象
applicationScope	代表application域中用于保存属性的Map对象
param	表示一个保存了所有请求参数的Map对象
paramValues	表示一个保存了所有请求参数的Map对象,它对于某个请求参数, 返回的是一个string类型数组
header	表示一个保存了所有http请求头字段的Map对象
headerValues	表示一个保存了所有http请求头字段的Map对象,返回string类型数组
cookie	表示一个保存了所有cookie的Map对象
initParam	表示一个保存了所有web应用初始化参数的map对象
(3) Java类;
(4) 集合元素;
(5) 作用域变量。

3. 使用EL表达式的好处 
(1) 它简化了JSP页面中表达式的使用,它无需使用Scriptlet代码就可以使用表达式;
(2) 它提供了自动类型转换。

4. 使用EL访问隐式对象
${隐式对象名称.引用对象名称}
注意:
测试headerValues时,如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
•测试cookie时,例${cookie.key}取的是cookie对象,如访问cookie的名称和值,须${cookie.key.name}或${cookie.key.value}

5. 用EL访问JavaBean
${bean.attribute}
7. EL支持的运算符
8. 想要在单个JSP页面中使EL表达式失效,需要使用page指令将isELIgnored属性值设为true:<%@ page isELIgnored ="true|false" %>。
想要在多个JSP页面中停用对EL表达式的评估的话,需要修改web.xml文件。
使某个EL表达式失效,使用实体&#36;替换’$’符号,或者放置反斜杠‘\’在’$’符号之前

十六.JSTL标准标签库

1.安装jstl
1)下载jar包,将standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下。
2)在每个JSP文件中的头部使用<taglib>指令,引入标签库
2.jstl分为5个类别
1)核心标记库:用于在JSP页面中执行常见的重复任务,也提供基于URL的资源的标记,使用它需要加上前缀字母c。根据标记执行的功能,核心标记分为4组:①变量支持标记:remove,set;②流程控制标记:choose、foreach、forTokens、if;③URL管理标记:import、redirect、URL;④其它标记:catch、out。熟练掌握这些标签。
例如:<c:cout>标签的语法格式:<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
 	<c:set>标签的语法格式:<c:set   var="<string>"   value="<string>"   target="<string>"   property="<string>"   scope="<string>"/>
    <c:forEach>标签格式:<c:forEach   items="<object>"   begin="<int>"    end="<int>"
    step="<int>"     var="<string>"    varStatus="<string>">
2)格式化标签库:JSTL格式化标签用来格式化并输出文本、日期、时间、数字。
3)XML处理标签库:创建和操作XML文档的标签
4)  SQL标签库:与关系型数据库(Oracle,MySQL,SQL Server等等)进行交互的标签。
5)JSTL函数:包含一系列标准函数,大部分是通用的字符串处理函数。

十七.Web.xml

web.xml是部署描述符,放在WEB-INF目录下面,掌握以下常用的标签。
<web-app><servlet>:标记包含的servlet的信息。
<init-param>:提供Servlet初始化参数
<display-name>:显示servlet的名称。
<servlet-name>:servlet的名称,可通过该名称访问servlet。
<servlet-class>:Servlet类的名称,也就是servlet编译的class文件的地址(一般都要加上“类名+包名”)。
<servlet-mapping>:指定Servlet和URL模式之间的映射。
<servlet-name>:同上面。
<url-pattern>:指定对应于Servlet的URL路径,该路径是相对于Web应用程序上下文根的路径。
<session-config>:为session指定会话信息。
<session-timeout>:设置会话超时的时间,以min计算。
<welcome-file-list>:包含主页的列表。
<welcome-file>:设置主页的完整名称,例如:index.html。
<context-param>
<param-name>,<param-value>
<filter>
<filter-name><filter-class>
<filter-mapping>
 	<filter-name>,<url-pattern>
<listener>
<listener-class>
<error-page>
<error-code>,<exception-type>,<location>
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨小杨1

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值