本笔记参考视频《尚学堂JSP视频》
一、 基本原理
1、 Tomcat自动将jsp文件转化成servlet。
2、 <!% %>中申明的变量和方法自动被转化为相应的servlet的成员变量和成员方法。而在<%%>中申明的变量被转化成_jspService方法中的局部变量。
3、 一个奇怪的现象,在<%! %>中第一一个成员变量,输出变量+1到前台,每次访问次数按理应该加1,但是代码被修改后再次访问时,加到一定的数字重归1。原因可能是Tomca内部的同步问题造成的。因为servlet是被同步访问的,所以尽量不要设置servlet的成员变量。
二、 常用jsp指令
1、 page的errorPage属性
在jsp页面中定义errorPage属性
<%@ page errorPage=”errorPage.jsp”%>
在errorPage.jsp中定义isErrorPage属性
<%@ page isErrorPage=”true”%>,可以使用内置对象exception,如果<%=exception.getMessage()%>
2、 include
(1) 静态包含<%@ include fiile=”titleBar.jsp”%>
在编译成servlet文件之前,将文件包含进来,被编译成一个servlet。包含文件和被包含文件访问的是同一个request对象。包含文件的时候不能传递参数,如<%@ include fiile=”TitleBar.jsp?user=123”%>是非法的。
(2) 动态包含<jsp:include fiile=”include.jsp”/>
包含文件和被包含文件分别编译成两个servlet;包含文件和被包含文件中的request内置对象是不同的,但是被包含文件的request可以访问包含文件所能访问的所有参数。包含文件的时候可以传递参数。
向包含页面传递参数:
<jsp:include page=”divide.jps” flush=”true”>
<jsp:param name=”v1” value=”%=value1%”/>
<jsp:param name=”v1” value=”%=value2%”/>
</jsp:include>
(3) <%@ include %>和<jsp:include>的区别
<%@ include file="date.jsp" %>
|
<jsp:include page="date.jsp"
flush="true"/>
|
include指令是在JSP程序编译前将file属性所指定的程序内容嵌入,再编译成一个servlet的字节码文件;
|
包含文件和被包含文件都被编译成相应的servlet字节码文件,在客户端请求时运行时载入包含文件的执行结果
|
include的file中不能带参数
|
<jsp:include>可以
|
包含页面和别包含页面使用同一个request对象
|
包含页面和被包含页面使用不同的request对象,被包含页面可以取得包含页面的参数,并可以在包含页面添加自己的参数(可以通过url或者通过指定jsp:param)
|
常用
|
不常用
|
三、 response.sendForward()和<jsp:forward>的区别
Sendredirect
|
Forward
|
页面和转向页面使用不同的request,转向页面不能取得上一页面的参数
|
使用不同的request对象,但转向页面可以取到上一个页面的参数
|
send后的语句会继续执行,除非return
|
forward后的语句不会继续发送给客户端
|
访问的原理是,客户端向服务端发送请求,服务器端浏览器发送转向指令,客户端再向服务器端发送请求(转向页面),服务器端把请求结果返回给客户端。需要客户端和服务器端的往返,所以速度慢
|
转向在服务器内部转化,所以速度比较快
|
可以转到任何页面
|
服务器内部转换,所以不能转向非项目内的页面
|
地址栏有变化
|
地址栏没有变化
|
可以传参数,直接写在url后面
|
可以传参数,即可写在url后面,也可以用指令<jsp:param>
|
/代表的是http://127.0.0.1/
<%response.sendRedirect("/test/ServletToJSP");%>
<form action="/test/ServletToJSP">
<a href="/test/ServletToJSP">test</a>
|
/代表的是http://127.0.0.1/test
this.getServletContext().getRequestDispatcher ("/servlet_jsp/ServletUseJsp.jsp")
.forward(req, resp);
并且只能以/开头
|
常用
|
常用
|
四、 userBean
1、 创建bean对象
<jsp:useBean id=”cb” class=”bean.CounterBean”/>
相当于<%CounterBean cb=new CounterBean()%>
2、 设置属性值
<jsp:setProoerty name=”cb” property=”count” value=“12” />
其中的param=”name”,相当于request.getParameter(“name”);
相当于<%cb.setCount(23)%>
property=”*”时,相当于将表单中的同名属性复制给成员变量。
3、 获取属性值
<jsp:getProperty name=”cb” property=”count”/>
相当于<%=cb.getCount()%>
4、 scope参数有四个取值,分别为page(默认),request,session,application
如果scope=”request”,则相当于下面的代码
<%
bean.CounterBean counterBean=(bean.CounterBean)request.getAttribute(“counterBean”);
if(counterBean==null){
counterBean=new bean.CounterBean();
request.setAttribute(“counterBean”,counterBean);
}
%>
session和applicationt同理。
5、
五、 从servlet转到jsp
1、 使用forward方式
this.getServletContext().getRequestDispatcher(“”).forward(req,resp);
或者thisgetServletConfig().getServletContext().getRequestDispatcher(“”).forward(req,resp);
其中路径必须以/开头。
2、 使用sendRedirect方式
resp.sendRedirect(req.getContextPath()+””);
其中req.getContextPath()获得工程名/my
六、
分享到:
相关推荐
JSP笔记,JSP笔记 JSP JAVA 笔记
韩顺平jsp笔记(个人总结版)
好Day1 Tomcat的全局配置文件 ...1、jsp(java server page):是服务器端运行的,JSP本身就是一个文档,不仅可以包含静态的HTML代码,也可以包含动态的JAVA代码,服务器容器可以将JSP转换成Servlet发布,并接受请求.
Jsp笔记
JSP(java server page) 1.JSP介绍: JSP是服务器端运行的页面,JSP本身就是一个Servlet,他不仅可以包含静态的HTML代码,也可以包含动态的JAVA代码,服务器容器可以将JSP转换成Servlet发布,并接受请求。 Jsp文件...
可以获取jsp笔记,不需要自己去记,直接下载直接用,里面包括源码和各种软件。
这是一个JSP实例,由四个JSP页面组成,处理用户的注册和登陆信息。
2023年JSP笔记之五JSP和数据库应用.doc
完整的jsp笔记,涵盖了整个jsp学习内容。有实例,有分析。
JSP笔记关于JSP原理、常用语法、看完之后简单的JSP文件代码可以看懂
jsp笔记(20220104183605).pdf
JSP笔记(20220104194929).pdf
达内jsp笔记完全版, 很详细,给大家共享
两个不错的JSP笔记.觉得还不错,跟大家分享一下!
6_JSP笔记.pdf
北京圣思园jsp笔记,详细的要看视频,张龙老师讲的,很不错的课程。
jsp笔记,自己收集,极力推荐,很多很全面的例子,概念,很值得的东西