<%
String username = request.getParameter("username");
String password = request.getParameter("password");
out.println("username:" + username + "<br>");
out.println("password:" + password + "<br>");
%>
请求JSP处理过程
1.服务器接受客户端请求
2.分析请求的资源是否存在
3.若存在则判断该资源是否在修改或创建后的第一次调用(到第4步),若不存在则显示404错误。
4.若是,则将请求的JSP文件转换成Servlet(java文件),再编译成class文件;若不是,则跳转到第5步。
5.执行相应的class文件。
JSP语法:
类型一:编译器指令(DIRECTIVE)
<%
@ page import = "java.io.*" %>
包含指令:
1)include指令:向当前页面插入一个静态的内容
JSP语法格式:<%@ include file = "relativeURL" %> 或
<%@ inclued file = "相对位置" %>
2)page指令:<%@ page
[ language = "java"]
[ extends = "package.class" ]
[ import = "{ package.class | package.* }"…" ] (这个用得最多)
[ session = "true | false" ] %>
3)taglib指令:<%@ taglib uri = "URIToTagLibrary" prefix = "tagPrefix" %>
(用于引入自定义的标签库)
类型二:脚本语法(SCRIPTING)
<% 嵌入JAVA代码; %>
HTML注释:<!-- comments -->
// 可在客户端中查看
可在注释中嵌入表达式:<!-- <%= new java.util.Data() %> -->
隐藏注释:<%-- comments --%>
// 不会在客户端中查看
声明:<%
! 正常的声明语句; %>
此处声明的变量是单例变量(成为类的成员变量)
*JSP声明的格式:<%! int a = 3;%>
脚本段的形式:<% int b = 3; %>
当服务器将JSP转换成Servlet时,会将JSP中的声明转换为类的成员变量,而脚本段转换为方法中的局部变量,
Servlet是单实例的,这样成员变量的值只有一个,每个用户都会访问到它,而脚本段中的值则是局不变量,每个用户访问的时候各有一份,互不影响。
表达式:<%=对象名%>(无分号) // 直接输出对象的值
脚本段:<% JAVA代码; %>(有分号)
类型三:动作语法(ACTION)
<jsp:forward>, <jsp:getProperty>, <jsp:include>
1)<jsp:forward> 用作跳转
直接跳转:< jsp:forward page = {"relativeURL" | "<% expression %>"} >
带值跳转:< jsp:forward page = {"relativeURL" | "<% expression %>"} >
<jsp:param name = "参数名" value = "参数值">
(将参数往页面传)
</jsp:forward>
注:<jsp:forward>指令用于转向页面,在该指令后面的所有代码都不再进行。
2)<jsp:include> 用作包含
与上述用法相似