jsp:页面组成部分:
Template(模板)data:JSP引擎不处理的部分,比如HTML代码等。
JSP元素:JSP引擎处理的部分
编译器指令(DIRECTIVE):
页指令:<%@page import ="java.io.*"%> 用于定义JSP文件中的全局属性,作用于整个页面 ,import 指令中:java.lang.*;javax.servlet.*;javax.servlet.jsp.*;javax.servlet.http.*;这几个包都已经默认导入,无需再导入。
包含指令:<%@file ="relativeURL"%>
taglib指令:用于引入定制标签库
<%@tagliburi = "URIToTagLibrary prefix="tagPrefix"%>
脚本语法(SCRIPT): Demo
HTML注释: <!--此注释会被解释并发送到浏览器上-->
隐藏注释:<%--此注释不会被解释和发送--%>
声明 :
<%!Datedate = new Date();%>
<%!inta,b,c;%>
全局对象和变量的声明,如果不加感叹号,就是局部的。
表达式
<%=expression%>
脚本段
<%codefragment%>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<center>
<%!Date date = new Date(); %> <!-- 定义变量 -->
<%!int a,b,c; %>
<%int a = 12,b=10,c=a+b; %> <!-- scriptLet -->
<font color = "blue">
<%=date.toString()%> <%--表达式,此注释不会发送到浏览器上 --%>
</font><br>
<b>a = <%=a %></b> <!-- <b>标签作用是展现粗体效果 -->
<b>b = <%=b %></b>
<b>c = <%=c %></b>
</center>
</body>
</html>
动作语法(ACTION):Demo01
JSP标签:<jsp:forward>,<jsp:include>,<jsp:getProperty>,<jsp:setProperty>,<jsp:useBean>
例子说明:demo1.jsp通过<jsp:fowward>标签转向demo01ForwardTo.jsp页面,forward标签后面的代码不再执行。
demo1.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"demo01ForwardTo.jsp
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Demo01</title>
</head>
<body>
<jsp:forward page="demo01ForwardTo.jsp">
<jsp:param value="cuige_" name="userName"/>
</jsp:forward>
<%System.out.println("此段代码不会被执行"); %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
String userName = request.getParameter("userName");
String outStr = "谢谢光临!";
outStr += userName;
out.println(outStr);
%>
</body>
</html>
JSP内置对象
request
response
pageContext
session
application
out
config
page
exception
重点:
request session
Http协议是无状态协议(stateless)协议
WebServer对每个客户端请求都没有历史记忆,Session用来保存客户端状态信息
Demo2:
demo2.jsp 表单页,session.jsp 接收表单信息并存入session.jsp,check_session.jsp检测session中用户名属性是否为null,并显示不同信息。
demo2.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"session.jsp
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<center>
<h1>欢迎来到崔哥的博客</h1>
<form action="session.jsp">
用户名:<input type = "text" name = "userName"><br><br>
<input type = "submit" value = "提交" >
</form>
</center>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>将form传过来的数据存入session</title>
</head>
<body>
<%
String userName = request.getParameter("userName");
session.setAttribute("logName",userName);
%>
您的名字<%=userName %>已经写入session。<br>
<a href = "check_session.jsp">check</a>
</body>
</html>
check_session.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>check_Session</title>
</head>
<body>
<%
String name = (String)session.getAttribute("logName");
if(name == null){
%>您还未登陆。
<%
}else{
%>
<%=name %>已经登录。
<%
}
%>
</body>
</html>
application
Application对象负责提供应用程序在服务器中运行时的一些全局信息。
Demo3设置网页计数器,只要tomcat不重启,该 计数器一直往上加。
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>网页计数器</title>
</head>
<body>
<%
if(application.getAttribute("counter")==null){
application.setAttribute("counter", "1");
}
else{
String strnum = application.getAttribute("counter").toString();
int icount = Integer.parseInt(strnum);
icount++;
application.setAttribute("counter", Integer.toString(icount));
}
%>
<center>
<h1>您是第 <%=application.getAttribute("counter").toString() %> 位访问者。</h1>
</center>
</body>
</html>
JavaBean
JavaBean分为两种:一种是有用户界面(UI,UserInterface)的javaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操作数据库)的Bean,JSP通常访问的是后一种Bean。
一:JavaBean定义
JavaBean是一种可重复使用、跨平台的软件组件。JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean,例如NetBean中的那些可视化图形界面 ,
;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是最后一种JavaBean。
二:Jsp与JavaBean搭配使用的特点
1.使得Html与Java程序分离,这样便于维护代码。如果把所有的程序代码都写成jsp到网页中,会使得代码繁杂,难以维护。
2.可以降低开发jsp网页人员对Java编程能力的要求。 //尼玛,这不是分工了嘛,估计如果一个程序猿只会写jsp估计会饿死...
3.jsp侧重生成动态网页,事务处理由JavaBean来完成,这样可以充分利用JavaBean组件的可重用性特点,提高开发网站的效率。
JSP访问javabean的语法
声明:使用<jsp:useBean>标签
访问属性:<jsp:getProperty>,<jsp:setProperty>
范围:默认为page,还有request session application
Demo4:创建一个JavaBean,并在jsp文件中进行属性的读写。
Student.java
package cn.itcast.model;
public class Student {
private String name;
private int age;
private boolean sex;
public Student(){
name = "zhangsanfeng";
age = 20;
sex = true;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
}
demo4.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id = "student" scope="application" class = "cn.itcast.model.Student" />
<%=student.getName() %><br>
<%student.setName("cui"); %>
<jsp:getProperty property="name" name="student"/>
<jsp:getProperty property="age" name="student"/>
<jsp:getProperty property="sex" name="student"/>
<br>
<%=student.getName() %>
<%=student.getAge() %>
<%=student.isSex() %> <%--javabean的属性其中如果有事布尔类型的getXX方法可以写成isXX --%>
</body>
</html>