jsp servlet认为是带有HTML的java代码,jsp是带有java代码的HTML
但是,实际上jsp就是一个servlet,jsp是建立在servlet提供的规范之上的一个动态页面技术
请求访问jsp,jsp容器会将jsp文件转换成.java然后编译这个.java文件,生成.class文件。最后执行。
(在work缓存区中的mysjp中能找到相应的.java和.class文件) JSP(java server page) jsp主要有两部分组成
模板数据
包括HTML css javascript 指令元素
page指令
<%@ page attr1="" attr2=""...%>
作用是在jsp声明这个类所需要的基本条任何一个jsp都必须要有page指令
元素
件,比如说导包
include指令
<%@ include file="XXX" %> include指令用于包含某个页面 这种包含方式叫做静态包含,静态包含的被包含页面的内容,且在请求已进入该jsp的时候就已经将被包含页面的内容加载进来。即便程序可能执行不到。
被包含页面不会产生一个java文件 taglib指令
声明段 作用是申明jsp中的一些成员变量和成员方法
<%!.........%>
在申明段中出现的代码严格遵守Java语法标不能直接在声明段中出现执行语句。在声明段
基本元素
准
出现的代码出现在Jsp转换成的Java类的类体中,属于成员部分。声明段不会再页面上产生任何的输出
脚本段
作用在JSP执行一些java代码 <%.............%>
在脚本段中的代码严格遵守java语法标准 在脚本段出现的代码会出现在jsp转换成java
类的service方法体中,所以在脚本段中声明的变量为局部变量,不能再脚本段中声明方法。可以通过out.write()在页面产生输出。 表达式
作用是直接在页面上输出该表达式的值 <%=.................%>
写在表达式的代码为标准的java表达式。可后面不能有分号。
在动作元素中,所有的动作元素都严格遵守<jsp:include page="aaa.jsp"></jsp:include> 这种包含方式叫做动态包含
以是任意值。除了void
动作元素
XML语法标准
userBean动作 语法
<jsp:useBean id="" class="" scope=""/>
作用是去scope指定的范围中去寻找类型为
class指定的类型对象,引用名由id指定,若该范围不存在这样一个对象,则创建一个 id 指定bean对象在范围中的属性名 同时也是该对象在jsp中的引用名
素中是否导包,这里必须是包名+类名
class 指定bean对象的类型,不管你在指令元scope 指定范围。取值为四个 page
(=pagecontext) request session application
setProperty动作 语法
name="" name=""
property="" property=""
<jsp:setProperty value=""/> //这里的value是写死的,name等于上面的id
<jsp:setProperty
param=""/>
<jsp:setProperty name="" property="*"/>//参数
名及属性名相同,就可以用这种简易写法 合使用
注意 setProperty动作必须跟userbean一起结
<jsp:getProperty name="u"
property="username" /> EL表达式
${u.username} 或 ${u["username"]} 这里u是从四个范围中去找,从小到大
若在request中有个u 在session也有个u 那么上面一句显示的是request中u的username 如果在这种情况下 非要session的u可以通过EL表达
式的内置对象来访问
${sessionScope.u.username} sessionscope requestScope
pageScope 不使用 applicationScope
param 代表的是所有参数的对象也就是form对象
动态包含和静态包含的区别 动态只有在程序执行到的时候才会执行包含语句,并且也只有在
这个时候才会去加载被包含页面。
静态包含则不管程序是否会执行到包含语句,一开始的时候就直接将包含页面中的所有的内容加载进包含页面中
JSP中9个内置的隐含对象 只有在脚本段和表达式中使用,声明段是不能使用的。
pageContext reuqest session application //这四个范围是从小到大
response config out execption page
pageContext 表示的是当前的页面范围对象 可以对其设置或取出属性 setAttribute
request表示请求对象,同时也表示请求范围
session表示会话对象Httpsession,同时也表示会话范围
静态包含不会被包含页面转换成java文件。
动态包含会将被包含页面也转换成java文件,所有动态包含至
少有2个java文件。
application 表示应用ServletContext, 同时也表示整个项目范围
response 响应
config 表示JSP的配置对象,这里JSP可以不配置,但是同样也拥有配置对象
out 表示当前响应流
exception 表示异常对象
page jsp对象,也就是jsp转换成的servlet的servlet对象
javaBean 是一个公共的类,要有一个无参的构造器,私有的字段,并且每个私有字段配有公共的set和get方法 (实现Serializable接口)
第二篇:JSP总结
JSP课程学习知识点总结:
1. 知道什么是JavaWeb开发
2. 知道什么是tomcat(一种服务器),并会通过绑定tomcat和
MyEclipse来发布一个Web工程
3. 知道如何修改tomcat的端口号:在conf文件夹下的
server.xml进行修改
4. 知道如何修改tomcat目录是否显示:在conf文件夹下的
web.xml进行修改,将listings设置为false表示不显示,设置为true表示显示。
5. 会安装Oracle并会创建Oracle登录名,或者创建一个新的
Oracle数据库服务(在开始里找到Oracle的文件夹然后找到配置和移植工具,选择其下的DataBase Configuration Assistant),会创建一个新的监听(在开始里找到Oracle的文件夹然后找到配置和移植工具,选择其下的Net Configuration Assistant)进行创建
6. JSP的三种注释:
按类型分为:显示注释和隐式注释
显示注释:<!--注释的代码-->(同HTML注释)
隐式注释:分为Java注释和JSP注释
Java注释://和/*注释内容*/
JSP注释:<%--注释内容-->
7. JSP = Java+HTML(JSP就是在HTML页面嵌入Java代码)
8. Java代码需要写在scriptlet中,共有三种scriptlet,我们最
常用的就是<%Java代码%>(用来写入要执行的Java代码)和<%= 显示在页面中的内容%>(用来在页面显示内容),还有一种就是<%! 定义方法或者全局变量或者类%>(该种方式不常用)
9. 会使用page指令中的import属性(将要包含的包包含进
来,同Java中的import相似),pageEncodeing(用来设置当前页面的编码方式),contentType(用来设置MIME类型)
10. 会区分和使用静态包含(<%@include file=”包含的页
面”%>)和动态包含(<jsp:include page=”包含的页面”/>)
静态包含:先包含后处理,不可以传值
动态包含:先处理后包含,可以传值,在被包含的页面可以通过request.getParameter(“name属性的值”),获取到包含过来的值
11. 会使用<jsp:forward page=”要跳转的页面” />进行页面跳
转,该种跳转属于服务器跳转可以传值,在跳转到的页面通过request.getParameter(“name属性的值”),获取到传过来的值
12. 学会使用JSP的九个内置对象,熟练掌握request,
response,session,application这是个内置对象的用法。
13. 解决传值乱码的方法:
方法一:在接值之前执行以下代码request.setCharacterEncoding(“utf-8”);
方法二:例子:
比如说页面穿过来了一个name属性值为username的控件变量,那么 :
首先:先接到页面传过来的这个值:
String stuname = request.getParameter(“username”);
然后用new String()方法进行转码:
stuname = new String(stuname.getBytes(“iso-8859-1”),”utf-8”);
14. 可以通过request.getParameter(“控件的name属性值”),获
取到一个页面传过来的单一控件的值(如radio,text,password,hidden等等),可以通过request.getParameterValues(“控件的name属性值”),获取到一个页面传过来的复杂控件的值(如checkbox等)
15. 学会使用request.setAttribute(“key”,value);
要跳转的和路request.getRequestDispatcher(“
径”).forward(request,response).进行传值跳转。使用request.getAttribute(“key”),获取到传过来的值
16. 学会使用response.setHeader(“refresh”,”5;url=’login.jsp’”);
进行页面的刷新跳转
17. 学会使用response.sendRedirect(“login.jsp”)进行页面的跳
转
18. 区分请求转发(服务器端跳转)和请求重定向(客户端跳
转):
请求转发:request.getRequestDispatcher(“要跳转的地址”).forward(request,response);和request.setAttribute(“key”,value),配套使用
请求重定向:response.sendRedirect(“要跳转的地址”);想要传值的话可以通过?传值。
(1).请求转发可以直接传值,但是请求重定向不可以直接传值,但是可以通过?进行传值
(2).请求转发属于服务器端跳转,请求重定向属于客户端跳转
(3).请求转发的时候地址栏不变,请求重定向的时候地址栏发生改变
(4)服务器端跳转,跳转语句之后的代码不会被执行,之前的代码会被执行。客户端跳是所有语句执行完之后执行跳转操作。
19.会使用Session的用法:在实际项目开发过程中,session主要用于对用户登录信息的存储,例如:当我们登录到一个页面的时候我们要通过session.setAttribute(“key”,value);将用户信息保存到session之中,这样的话我们就可以在整个session会话(session会话指的是一个session的创建到一个session的销毁)当中通过session.getAttribute(“key”)操作该session。并且该session会话只属于登录的用户,也就说每个
登录的用户都创建了一个属于自己的唯一的session。会通过session.invalidate()方法注销一个session,即用户的退出操作。
20.JSP四种页面属性范围总结:
(1).Page(HttpJspPage)主要用来表示我们的当前页面的唯一性,通过hashCode()方法可以获取到我们当前页面的哈希值,该值标识我们当前页面的唯一性。通常情况下用不到,了解就可以。
(2).request(HttpServletRequest)主要用来获取用户提交的信息,只在一次请求中保存,适合一个页面到另一个页面的传值,只有请求转发才可以,请求重定向不可以但是可以通过问号传值。
(3).Session(HttpSession)主要是用来存储用户登录的信息,在一次会话中生效。无论何种跳转都可以使用,但是新打开一个浏览器不可以使用。
(4).application(ServletContext)主要是用来存储应用系统公共数据的。只要没有关闭服务器,application对象一直存在,所有用户都可以共享application对象。我们一般将程序共享的数据保存到application当中。
21.config(ServletConfig)对象:用来获取服务器的相关配置信息(即web.xml中的配置信息)。可以通过getServletContext()方法获取到上下文对象,即application对象(获取application对象的一种方式)。
22.out(JspWriter)对象:主要就是用来在页面上输出想要显示的内容(out.println(“123”)同<%= “123”%>都是用来在页面上显示123)
23.pageContext(PageContext)对象:可以获取到out,response,request,session,application对象
24.exception(Throwable)对象:当我们程序出现异常的时候,可以跳转到我们制定的异常页面。一共有两种设置方式 第一种:创建一个错误页页面error.jsp 并指定<@ page isErrorPage = “true”/>,创建一个页面为index.jsp并指定<@ page errorPage = “error.jsp”/>当该页面出现错误的时候就会跳转到error.jsp
第二种方式:在web.xml中进行配置 :
例如:
<error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page> <error-page> <exception-type>java.lang.ArithmeticException</exception-type> <location>/error.jsp</location> </error-page>
当出现404或者java.lang.ArithmeticException错误的时候就会跳转到error.jsp页面.