首页 > 代码库 > JSP笔记
JSP笔记
溪云初起日沉阁,山雨欲来风满楼。—-唐代许浑《咸阳城东楼 / 咸阳城西楼晚眺 / 西门》
JSP基本语法
脚本标识
JSP 表达式
<%= 表达式%> 向页面输出信息
声明标识
<%!
声明的方法和变量的代码
%>
<%!
String s = "胖子";
int add(int x,int y){
return x+y;
}
%>
代码片段
<%
java代码或是脚本代码
%>
<%
out.print("这里是代码片段");
%>
<%@ 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=utf-8">
<title>创建一个发布JSP网站</title>
</head>
<body>
<h2>火星理工大学南昌校区</h2>
http://www.jxust-nc.cn/
<hr>
<%!
String s = "胖子";
int add(int x,int y){
return x+y;
}
%>
<%
out.print("这里是代码片段");
%>
<br>
你好,<%= s %>
x+y=<%=add(2,4) %>
<%="x+y="+add(2,6) %>
</body>
</html>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.text.*"%>
<!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=UTF-8">
<title>My JSP page</title>
</head>
<body>
<%!
String printMul() {
String s = "";
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
s += j + "×" + i + "=" + i * j;
s += " ";
}
s += "<br/>";
}
return s;
}
void printMul(JspWriter out)throws Exception{
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
out.print( j + "×" + i + "=" + i * j+
" ");
}
out.print("<br/>");
}
}
%>
<h2>JSP 九九乘法表</h2>
<%=printMul()%>
<% printMul(out);%>
</body>
</html>
注释
HTML中的注释
<!-- -->
隐藏注释
查看源代码看不到
<%-- --%>
动态注释
HTML注释对 JSP 嵌入代码不起作用
<!-- <%=new Date()% >-->
代码片段注释
//
/* */
提示文档注释,鼠标焦点在类、方法上有提示信息
/**
*
*/
指令标识
语法格式
<%@ 指令名 属性1="属性值1" 属性2="属性值2"...%>
page 指令
定义整个JSP页面的相关属性。
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
include 指令
可以在一个JSP页面中包含另一个JSP页面。
<%@ include file="path" %>
<%@ include file="top.jsp" %>
taglib 指令
声明该页使用的标签库。
<%@ taglib prefix="tagPrefix" url="tagURI" %>
//引用JSTL中的核心标签库
<%@ taglib prefix="c" url="http://java.sum.com/jsp/jstl/core" %>
动作标识
JSP 动作标识是在 JSP 的请求处理阶段按照在页面中出现的顺序被执行的,用于实现某些特殊用途(例如,操作JavaBean、包含其他文件、执行请求转发等)的标识。
操作 JavaBean 的动作标识
创建JavaBean实例
第一次实例化时执行
<jsp:useBean id="实例名" class="完整类名" scope="范围" beanname="完整类名" type="数据类型">
</jsp:useBean>
读取 JavaBean 属性值
<jsp:getProperty name="JavaBean实例名" property="JavaBean中的属性值"/>
设置 JavaBean 属性值
<jsp:setProperty name="JavaBean实例名" property="属性名" value="属性值" param="request请求中的参数" />
示例
不能传递中文字符
deal.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="user" scope="page" class="com.wgh.UserBean"
type="com.wgh.UserBean">
<jsp:setProperty name="user" property="*" />
<%-- 这是获取request所有的参数<jsp:setProperty name="user" property="*" /> --%>
<jsp:setProperty name="user" property="name" param="name"/>
<jsp:setProperty name="user" property="pwd" param="pwd"/>
</jsp:useBean>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>显示用户登录信息</title>
</head>
<body>
用户名:<%=user.getName()%><br>
密码:<%=user.getPwd()%>
</body>
</html>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>用户登录</title>
<style type="text/css">
body {
font-size: 12px;
}
</style>
</head>
<body>
<form name="form1" method="post" action="deal.jsp">
用户名: <input name="name" type="text" style="width: 120px">(请输入英文用户名)
<br>
<br>
密 码: <input name="pwd"
type="password" style="width: 120px">
<br>
<br>
<input type="submit" name="Submit" value="提交">
</form>
</body>
</html>
UserBean.java
//package com.wgh;
public class UserBean {
private String name; // 用户名
private String pwd; // 密码
// name属性对应的get方法
public String getName() {
return name;
}
// name属性对应的set方法
public void setName(String name) {
this.name = name;
}
// pwd属性对应的set方法
public void setPwd(String pwd) {
this.pwd = pwd;
}
// pwd属性对应的get方法
public String getPwd() {
return pwd;
}
}
包含外部文件的动作标识< jsp:include>
通过JSP 动作标识< jsp:include> 可以向当前页中包含其他文件。被包含的文件可以是动态文件,也可以是静态文件。
<jsp:include page="url" flush="false|true" />
或者
<jsp:include page="url" flush="false|true" >
子动作标识<jsp:param>
</jsp:include>
page 属性:指定包含文件的相对路径
flush 属性:可选属性,设置是否刷新缓冲区,默认值为false,如果设置为true,在当前页面输出使用了缓冲区的情况下,先刷新缓冲区,然后再执行包含工作。
子动作标识< jsp:param> : 用于向被包含的动态页面中传递参数。
示例:
图片素材:
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>使用<jsp:include>动作标识包含文件</title>
<style>
section{
background-image: url(images/center.JPG); /*设置背景图片*/
height:279px; /*设置高度*/
width:781px; /*设置宽度*/
}
footer{
background-image: url(images/copyright.JPG); /*设置背景图片*/
height:41px; /*设置高度*/
width:761px; /*设置宽度*/
padding: 20px 0px 0px 20px; /*设置内边距*/
}
body{
margin-left:100px;
}
</style>
</head>
<body >
<jsp:include page="top.jsp"/>
<section></section>
<jsp:include page="copyright.jsp"/>
</body>
</html>
top.jsp
<%@ page pageEncoding="UTF-8"%>
<img src="images/banner.JPG">
copyright.jsp
<%@ page pageEncoding="UTF-8"%>
<%
String copyright=" All Copyright © 2012 吉林省明日科技有限公司";
%>
<footer>
<%= copyright %>
</footer>
效果图:
执行请求转发的动作标识< jsp:forward>
通过 < jsp:forward> 动作标识可以将请求转发到其他的Web资源。
<jsp:forward page="url"/>
或者
<jsp:forward page="url">
子动作标识<jsp:param>
</jsp:forward>
设置参数的子动作标识< jsp:param>
JSP 的动作标识< jsp:param> 可以作为其他标识的子标识,用于为其他标识传递参数。
<jsp:param name="参数名" value="参数值" />
<jsp:forward page="modify.jsp">
<jsp:param name="uerId" value="7" />
</jsp:forward>
上面的代码中,实现了在请求转发到 modify.jsp 页面的同时,传递了参数 userId ,其参数值为7。
示例
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String[] dept = { "策划部", "销售部", "研发部", "人事部", "测试部" }; //声明并初始化一维数组
%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>应用Java代码片段动态添加下拉列表的列表项</title>
<style type="text/css">
body {
font-size: 12px;
}
</style>
</head>
<body>
<h3>员工信息查询</h3>
员工姓名:
<input type="text" name="name" size="10" /> 年龄:
<input type="text" name="age" size="3" /> 所在部门:
<select>
<%
//遍历数组并且数组元素作为下拉列表的列表项显示
for (int i = 0; i < dept.length; i++) {
%>
<option value="<%=dept[i]%>"><%=dept[i]%></option>
<%
}
%>
</select>
<input type="button" value="查 询" />
</body>
</html>
效果图:
查看源代码:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>应用Java代码片段动态添加下拉列表的列表项</title>
<style type="text/css">
body{
font-size: 12px;
}
</style>
</head>
<body>
<h3>员工信息查询</h3>
员工姓名:
<input type="text" name="name" size="10" /> 年龄:
<input type="text" name="age" size="3"/> 所在部门:
<select>
<option value="策划部">策划部</option>
<option value="销售部">销售部</option>
<option value="研发部">研发部</option>
<option value="人事部">人事部</option>
<option value="测试部">测试部</option>
</select>
<input type="button" value="查 询" />
</body>
</html>
嵌入 java 程序,实现动态效果。
JSP页面的生命周期
jspService()方法被调用来处理客户端的请求。对每个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应的一个线程。以多线程方式执行可以大大降低系统的资源需求,提高系统给的并发量及响应时间。但也要注意多线程的编程带来的同步问题,由于该Servlet始终驻于内存,所以响应是非常快的。
Eclipse 动态网站项目的 jsp 的字节码文件目录。(Myeclipse 在Tomcat的work目录下)
D:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost
一个 index.jsp
生成的是index_jsp.java
和index_jsp.class
两个文件。
JSP内置对象
JSP九大内置对象
- 用户发送请求( request )
- 服务器给用户响应( response )
- out对象是JSPWriter类的实例,是向客户端输出内容常用的对象。
request 对象
获取访问的请求参数
request 对象用于处理 HTTP 请求中的各项参数。在这些参数中,最常用的就是获取访问的请求参数。
发送一个请求到 deal.jsp
<a href="deal.jsp?id=1119 & user=peng">处理页</a>
在 deal.jsp 页面可以获取传递的参数值。
<%
request.getParameter("id");
%>
示例:
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>使用request对象获取请求参数值</title>
</head>
<body>
<a href="deal.jsp?id=119&user=你好">处理页</a>
</body>
</html>
deal.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("utf-8"); %>
<%
String user = new String(request.getParameter("user").getBytes("iso-8859-1"),"utf-8"); //获取id参数的值
String id = request.getParameter("id");//获取user参数的值
String pwd = request.getParameter("pwd");//获取pwd参数值
%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>处理页</title>
</head>
<body>
id参数的值为:<%=id%><br> user参数的值为:<%=user%><br> pwd参数的值为:<%=pwd%>
</body>
</html>
deal.jsp 页面效果:
id参数的值为:119
user参数的值为:你好
pwd参数的值为:null
2016 10 19 21点52分
< TODO> p137
JSP笔记