<%java代码%>
内部的代码翻译到service方法的内部 <%
int i=1;
System.out.print(i);
%>
<%=java变量或表达式%>
会在前台页面输出,被翻译成service方法内部的out.write( ) <%=i %>
<%=1+1 %>
<%!java代码或类方法%>
会被翻译成Servlet的成员内容 <%!
String str = "你好中国";
%>
<%=str %>
不同的注释可见范围不同
<!-- 这是html 注释-->
//单行注释
/*多行注释*/
/**可写入javadoc的注释*/
<%-- 这是JSP注释 --%>
打开web.xml
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
JSP的本质是Servlet。
格式:
<%@ page 属性名1= "属性值1" 属性名2= "属性值2" ...%>
常用属性:
language:jsp脚本中可以嵌入的语言种类,但是只能填写java
pageEncoding:当前jsp文件的本身编码---内部可以包含contentType
contentType:response.setContentType(text/html;charset=UTF-8)
session:是否jsp在翻译时自动创建session
import:导入java的包
errorPage:当当前页面出错后跳转到哪个页面
isErrorPage:当前页面是一个处理错误的页面
<%@ include file="被包含的文件地址"%>
作用:代码复现,可以单独写header.jsp
、footer.jsp
,写其他页面时直接引入
静态包含注意点:
<%@ taglib uri="标签库地址" prefix="前缀"%>
名称 | 类型 | 描述 |
---|---|---|
out | javax.servlet.jsp.JspWriter | 用于页面输出 |
request | javax.servlet.http.HttpServletRequest | 得到用户请求信息, |
response | javax.servlet.http.HttpServletResponse | 服务器向客户端的回应信息 |
config | javax.servlet.ServletConfig | 服务器配置,可以取得初始化参数 |
session | javax.servlet.http.HttpSession | 用来保存用户的信息 |
application | javax.servlet.ServletContext | 所有用户的共享信息 |
page | java.lang.Object | 指当前页面转换后的Servlet类的实例 |
pageContext | javax.servlet.jsp.PageContext | JSP的页面容器 |
exception | java.lang.Throwable | 表示JSP页面所发生的异常,在错误页中才起作用 |
pageContext翻译为“页面上下文”对象,代表的是当前页面运行的一些属性
向page范围中存入数据:setAttribute()
向page范围中获取数据:getAttribute()
向page范围中删除数据:removeAttribute()
查找属性的方法:findAttribute()
getException()
getPage()
getRequest()
getResponse()
getServletConfig()
getServletContext()
getSession()
getOut()
1、向request中存数据
pageContext.setAttribute("name", "张三", pageContext.REQUEST_SCOPE);
这句相当于
request.setAttribute("name", "张三");
session、application同理
2、取数据用getAttribute("name",pageContext.REQUEST_SCOPE);
其余同理
先根据小范围的名称进行查找,如果找到了就返回,找不到就去更大范围的那里去找。
PageContext.findAttribute("name");
如果pageContext里面没有,就去requestContext找,没有就去SessionContext找,没有就去applicationContext找,找不到就返回null
demo1.jsp
的body:
<h1>JSP四个作用范围演示</h1>
<%
//page范围(PageContext)
pageContext.setAttribute("name", "张三");
//request范围
request.setAttribute("name", "李四");
//Session范围
session.setAttribute("name", "王五");
//application范围
application.setAttribute("name", "冰冰");
%>
<h1>当前页面获取值</h1>
<%=pageContext.getAttribute("name") %>
<%=request.getAttribute("name") %>
<%=session.getAttribute("name") %>
<%=application.getAttribute("name") %>
<%
//转发到另外一个页面
//request.getRequestDispatcher("./demo2.jsp").forward(request, response);
%>
<a href="./demo2.jsp">demo2.jsp</a>
demo2.jsp
的body:
<h1>demo2页面获取值</h1>
<%=pageContext.getAttribute("name") %>
<%=request.getAttribute("name") %>
<%=session.getAttribute("name") %>
<%=application.getAttribute("name") %>
分析:
demo1.jsp
:demo1.jsp
请求转发至demo2.jsp
demo1.jsp
通过a标签
跳转至demo2.jsp
demo1.jsp
重定向至demo2.jsp
demo2.jsp
JSP的动作标签用于在JSP页面中提供业务逻辑功能,避免在JSP页面中直接编写Java代码造成jsp页面难以维护。
request.getRequestDispatcher("").forward(request, response);