JSP
JSP:在静态页面中嵌套Java程序。
JSP页面是一个Servlet。
在tomcat的控制台可以看到嵌套的Java程序运行情况。
JSP 的工作原理:
1.浏览器发送要请求的jsp页面给服务器,服务器查看有没有jsp页面
2.如果没有,直接返回给浏览器404错误
3.如果有,看是否有这个jsp的servlet实例,如果有直接返回给浏览器,如果没有,jsp页面转化为servlet的java文件,编译为class文件,再执行为一个servlet实例,返回给浏览器。
JSP语法:
1.脚本元素
(1)声明:<%! Context %>
(2)表达式:<%=express %>
(3)Java脚本:<% Java 程序 %>
2.编译指令
(1)page:
(2)include:(静态包含,在客户端发送请求jsp页面转化为java文件的时候就把被包含的文件包含进去了)
(3)taglib: 自定义一些标签。
// 区别:查看源代码和.java文件!!!
3.动作指令
(1)<jsp:include>:(动态包含,在执行到动作指令时才开始转化被包含的jsp页面)
(2)<jsp:forward>:
<jsp:forward page="hello.jsp"></jsp:forward> ---> 服务器内部跳转,地址不改变
(1)<jsp:useBean>
组件:javaBean
1.pojo类
2.实现serilizable接口
3.属性
4.与这些属性相对应的get和set方法
5.有一个无参的构造函数
6.封装了一些数据
7.处理业务逻辑
(2)<jsp:setProperty>
(3)<jsp:getProperty>
1.注释
(1)html/xml的注释 <!-- comment --> 在服务器端可以显示,在浏览器中也可以显示
(2)隐藏注释 <%-- comment --%> 在客户端和服务器端不显示
(3)脚本注释 // comment 、 /* comment */ /** comment */ 在客户端不显示,在服务器端显示
Post | Get 表单提交方式的区别 ?
EL:expression language 表达式
JSTL:jsp standard tag library 标签库
在J2ee1.4和jsp2.0版本中采用
JSP隐含对象:page、request、session、application
pageScope、 requestScope、sessionScope、applicationScope
JavaBean的使用
(1)定义一个class,一个或多个属性,获得set和get方法,无参构造方法。
(2)在jsp页面中使用javaBean:
<%--scope:在整个页面起作用
application:存于服务器端,不会随着浏览器的关闭而消失
request:相当于一个请求
session:在客户端,在会话时间结束后会保存于客户端
--%>
<jsp:useBean id="countBean" class="com.briup.javaBean.CountBean" scope="page"></jsp:useBean>
<%--
com.briup.javaBean.CountBean
countBean = page.get...();
if(countBean == null){
countBean = new com.briup.javaBean.CountBean;
}
--%>
<h2>
<%--相当于调用CountBean中 的set和get方法
name要与useBean中的id名称相同
value中可以传值或者表达式到set的方法中
--%>
<jsp:setProperty property="count" name="countBean" value="20"/>
count:<jsp:getProperty property="count" name="countBean"/>
(3)在jsp页面调用javaBean中的方法:
<jsp:useBean id="user" class="com.briup.javaBean.User" scope="request"></jsp:useBean>
<jsp:setProperty property="*" name="user"/>
<%
if(user.register()){
request.getRequestDispatcher("registerSuccess.jsp").forward(request, response);
}else{
%>
<jsp:forward page="registerFailure.jsp"></jsp:forward>
<%
}
%>