1. 动态页面技术( jsp )
what is jsp? java server page java服务器页面技术.
jsp包括了 静态部分及动态部分,运行于服务器中.
html中包含了java代码,必须运行在服务器,以完成翻译,编译,运行的过程,最后返回html给客户端.
最后生成 java, class文件都是放在 tomcat的work目录下.
work/Catalina/localhost/项目名/org/apache/jsp/ 页面名_jsp.java 而且这个java文件是一个final类.
2. jsp页面的结构:
静态部分: html, css, javascript (包含注释)
动态部分: jsp元素 ( java相关)
1. 指令
编译指令: 只在编译时起作用,不会有任何输出 ( import ,包含一个小模块, 导入标签库 )
<%@ page 属性名="值" %> 导入的类的说明, 编码集
<%@ include file="文件名.jsp" %> 包含另一个页面( 公用的模块 )
<%@ taglib prefix="前缀名" uri="定义标签地址" %> 导入标签库.
例: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=utf-8"%>
动作指令:
<%jsp:include %>
<%jsp:forward %>
<%jsp:param %>
2. 脚本: 逻辑,业务, 输出
小脚本
<% java代码 %> 逻辑和业务操作
声明
表达式
<%=值 %> 输出.
3. 注释
4. 9大内置对象. (重点) out
3. 注意:
a. 静态包含 <%@ include file="文件名.jsp" %> 包含另一个页面( 公用的模块 )
包含的是java源代码, 即将两个页面的.jsp代码翻译成 java后,再合并到一起,然后编译.
经常的问题: 两个页面中出现相同的变量,
小案例,九九乘法表
<%
//九九乘法表,后台打印
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+(i*j)+"\t");
}
System.out.println();
}
%>
//
<hr/>
<%
//九九乘法表,out输出
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
out.print(i+"*"+j+"="+(i*j)+"  ");
}
out.println("<br/>");
}
%>
/
<hr/>
<%
//九九乘法表,小脚本
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
%>
<%=i %>*<%=j%>=<%=i*j%>
<%
}
%>
<br/>
<%
}
%>
/
<hr/>
<table border="1">
<%
//九九乘法表,加入css表格
for(int i=1;i<=9;i++){
%>
<tr>
<%
for(int j=1;j<=i;j++){
%>
<td><%=i %>*<%=j%>=<%=i*j%> </td>
<%
}
%>
</tr>
<%
}
%>
</table>
/
<hr/>
<table border="1">
<%
//九九乘法表,加入js效果
for(int i=1;i<=9;i++){
%>
<tr>
<%
for(int j=1;j<=i;j++){
%>
<td οnmοuseοver="this.className='red'" οnmοuseοut="this.className='white'"><%=i %>*<%=j%>=<%=i*j%> </td>
<%
}
%>
</tr>
<%
}
%>
</table>
/ jsp取html传入的值
<%
request.setCharacterEncoding("utf-8");
//取出所有的参数的名字
Enumeration<String> parameternames= request.getParameterNames();
while( parameternames.hasMoreElements() ){
String pn=parameternames.nextElement(); //取出每一个参数的名字(键)
if( request.getParameterValues(pn).length>1){
String[] values=request.getParameterValues(pn);
out.println( pn+"=");
for( String s:values){
out.println( s +" ");
}
}else{
String value=request.getParameter(pn);
out.println( pn+"="+value+"<br />");
}
}
%>
to be continue.........