Java server page,SUN公司提供的动态网页编程技术,是Java web服务器端的动态资源,其根本是一个简化的Servlet设计,相比HTML,jsp技术允许在页面中嵌套Java代码,为用户提供动态数据
这个是本人在学习当中的笔记啦,保持持续更新~
1,WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录
2,web.xml,项目部署文件
3,classes文件夹,用以放置*.class文件
4,lib文件夹,用于存放需要的jar包
指令,表达式,小脚本,声明,注释,静态内容
<%@ page 属性1=“属性值” 属性2=“属性值1,属性值2”…属性n…%>
language属性 import属性 contentType属性
通常位于jsp页面的顶端,同一个页面可以有多个page指令
<%@ page language=“java” import=“java.util.*” contentType=“text/html;charset=utf-8”%>
语言,引入的包,文件类型和字符编码
将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句
使用标签库定义新的自定义标签,在JSP页面中启用定制行为
<!--html注释-->//HTML注释,客户端可见
<%--jsp注释-->//JSP注释,客户端不可见
//Java脚本注释,单行注释
/**/Java脚本注释,多行注释
<% Java代码%>
<%!
String s="张三"
int add(int x,int y){
return x+y;
}
%>
表达式语句是不以分号结束的
<br>
你好,<%=s %>//调用上面的
x+y=<%=add(10,5) %>
用户发出请求index.jsp,判断是否是第一次请求,如果是就生成字节码文件(通过什么什么什么),不是就直接访问字节码文件,最后解析执行,jspService()
(第一次请求一个jsp页面时,首先被执行的方法是构造方法)
<%!
String s="张三"
int add(int x,int y){
return x+y;
}
%>
<%!
<%@ page language="java" import="java.util.*" contentType="text/html; charset=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 printMultiTable(){
String s="";
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
s+=i+"*"+j+"="+(i*j)+" ";
}
s+="
";
}
return s;
}
void printMultiTable2(JspWriter out)throws Exception{
String s="";
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
out.println(i+"*"+j+"="+(i*j)+" ");
}
out.println("
");
}
}
%>
<h1>九九乘法表</h1>
<hr>
<%=printMultiTable()%>
<br>
<% printMultiTable2(out); %>
<br>
</body>
</html>
%>
JSP内置对象是web容器创建的一组对象,不使用new关键字就可以使用的内置对象
web程序的请求响应模式:用户发送请求,服务器给用户响应
out request response session application (不太常用的:page pageContext exception config)
buffer缓冲区:内存中一块区域用来保存临时数据
out对象是JspWriter类的实例,向客户端输出内容常用的对象
1,void println()//向客户端打印字符串
2,void clear()//清除缓冲区的内容,如果再flush之后调用会抛出异常
3,void clearBuffer()//清除缓冲区的内容,如果在flush之后调用不会抛出异常
4,void flush()//将缓冲区的内容输出到客户端
5,int getBufferSize()//返回缓冲区以字节数的大小,如不设缓冲区则为0
6,int getRemaining()//返回缓冲区还剩余多少可用
7,boolean isAutoFlush()//返回缓冲区的时候,是自动清空还是抛出异常
8,void close()//关闭输出流
<body>
<h1>out内置对象</h1>
<%
out.println("静夜思
");
//out.flush//结果不会有不同,只是缓冲区剩余大小会变
//out.clear//只会打印到前面一句,因为会抛异常,后面的就不执行了
out.println("床前明月光
");
%>
缓冲区大小:<%=out.getBufferSize() %>byte<br>
缓冲区剩余大小:<%=out.getRemaining() %>byte<br>
是否自动清空缓冲区:<%=out.isAutoFlush() %><br>
</body>
//