jsp:
一:
简介:(全称Java Server Pages),jsp是一个特殊的servlet;Servlet一般应用于逻辑控制,相当于mvc中Controller;servle的t不足:写一堆的html标签拼接;jsp是在java+html基础上,可写java代码和html标签,主要用于页面的显示;把jsp当作html用;你虽然会在jsp中写java代码,但是你别写,java代码主要写在servlet中;
基础: jsp的注释:< % --
<%@:代表声明的是jsp
language:语言
contentType:上下文(网页)用浏览器以什么样的类型和编码打开
pageEncoding:文件保存在服务器上的编码
<%:都是给tomcat看的,都要经过服务器运行
<%%>:可写java代码
输出:<%=>相当于out.println()
代码示例:1.<% //输出到页面 out.println("jsp"); %>
2.<%! //定义一个无返回值的方法 public void run(){
System.out.print("run....");
}
//定义一个有返回值的方法 public int num(int a,int b){
return a+b;
} %>
3. <% run();
int c=num(5,10);
System.out.print(c);
out.print(c); %>
<%=num(2,5) %>
4.<%int i=1;while(i<=20){%> <span style="color: red"><%=i %></span><%i++;} %>
5.打印九九乘法口诀表:
<table border="1" style="background: red;">
<%for(int i = 1 ; i < 10 ; i ++){%>
<tr>
<%for(int j = 1 ; j <= i ; j ++){%>
<td><%=i %> * <%=j %> = <%=i * j %></td>
<%}%> </tr>
<%}%></table>
二.
1.标签
2.Jsp生命周期和servlet一样;
_jspInit()初始化
_jspService()服务:主要功能代码
_jspDestroy()销毁
3.原理:Jsp被编译过的路径,一般在tomcat的work目录;jsp被翻译成:jsp名+_jsp.java文件,继承HttpJspBase实现了HttpServlet,再给编译成字节码文件:jsp名+_jsp.class
4.Jsp执行过程:
用户客户端访问页面发送请求,被web服务器翻译成.java文件,然后被jdk编译成class文件,最后在被web服务器解析成html响应到客户端;
5.页面跳转
<!-- 相对路径 --><button><a href="first.jsp">first1</a></button>
<!-- 绝对路径 --><button><a href="http://localhost:8080/com.jh.web/first.jsp">first2</a></button>
<%//获取的是路径:以防哪一天老板心情不好改了项目名String path=request.getContextPath();%><button><a href="<%=path %>/first.jsp">first3</a></button>
<!-- 利用jsp标签 --><jsp:forward page="first.jsp"></jsp:forward>
请求转发:<%request.getRequestDispatcher("first.jsp").forward(request, response);%>
//重定向<%response.sendRedirect("first.jsp");%>
请求转发与重定向的区别:
forward:服务器转发 只发送一次请求,地址栏未发生改变 转发效率高 只能访问本网站页面
Redirect:客户端转发 发送了两次请求,地址栏发生了改变 转发效率低 可访问其他网站页面
--%>
三.注册登录页面:
第一步:
第二步:
第三步:
第四步:
第五步:
第六步:
第七步:
第八步:
第九步:
第十步:
四.
1. jsp九大内置对象
内置对象不用再像java一样new对象,直接拿着使用;
name |
类型 |
描述(decription) |
pageContext |
PageContext |
上下文 |
session |
HttpSession |
会话 |
application |
ServletContext |
应用服务 |
config |
ServletConfig |
配置 |
out |
JspWriter |
输出 |
page |
index_jsp |
Jsp的java文件 |
request |
HttpServletRequest |
请求 |
response |
HttpServletResponse |
响应 |
e |
Exception |
异常 |
jsp的四大作用域
作用域 |
描述 |
Page(pageContext) |
当前页 |
request |
一次请求(多个页面) |
session |
一次会话 |
application |
应用 |
作用域大小:application > session > request > pageContext;使用规则能用小的作用域不要大的作用域,浪费内存
测试pageContext:
<body>
<%--
测试pageContext作用域
--%>
<%
pageContext.setAttribute("name", "岳飞");
%>
<%
String name=(String)pageContext.getAttribute("name");
out.print(name);
%>
</body>