【第一个JSP举例】

header.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%> <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<% out.println("welcome调用这个JSP页面"); %>

  footer.jsp

<br>

</body>
</html>

  jsp代码

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%> <%@ include file="/header.jsp" %><%--包含页头 --%> <%!
int i=0;
private int count(){
i++;
return i;
}
%>
<p>调用count输出<%=count() %></p>
<p>调用count输出<%=count() %></p>
<br>
<%@ include file="/footer.jsp" %><%--包含页底 --%>

  

【概念总结】

language定义使用的脚本语言
contentType定义jsp字符编码和页面响应的MIME类型
pageEncoding jsp页面的字符编码

scriptlet标签

<%! %>可定义全局变量、全局方法、全局类
<% %>可定义局部变量
<%= %>输出

JSP注释
<!-- -->HTML客户端可见
<%-- --%>客户端不可见
//单行注释
/* 多行注释 */

静态包含
<%@ include file="header.html" %>
<%@ include file="footer.jsp" %>
动态包含
<jsp:include page="header.html" />
<jsp:include page="footer.jsp" />

【jsp九大内置对象】
pageContext request response session application config

out page exception

【四大作用域】
Page范围 只在一个页面中保存数据 抽象类
Request范围 只在一个请求中保存数据 接口
Session范围 在一个会话范围中保存数据,仅供单个用户使用

接口
Application范围 在整个服务器上保存数据,所有用户共享

【Page范围】

<%@ 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>Insert title here</title>
</head>
<body> <%
pageContext.setAttribute("name","名字");
pageContext.setAttribute("age",24);
%> <%
String str1=(String)pageContext.getAttribute("name");
int n=(Integer)pageContext.getAttribute("age");
%>
<p>姓名:<%=str1 %></p>
<p>年龄:<%=n %></p>
</body>
</html>

  【Request范围】

<%@ 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>Insert title here</title>
</head>
<body> <%
request.setAttribute("name","马云");
request.setAttribute("age",23);
request.setAttribute("sex","男");
%>
<jsp:forward page="f_target.jsp"></jsp:forward> </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=utf-8">
<title>Insert title here</title>
</head>
<body> <%
String str=(String)request.getAttribute("name");
int age=(Integer)request.getAttribute("age");
String sex=(String)request.getAttribute("sex");
%> <p>姓名:<%=str %></p>
<p>年龄:<%=age %></p>
<p>性别: <%=sex %></p> </body>
</html>

  【Session范围】

session保存在服务器中,只要页面不关闭,就可以随时取得

<%@ 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>Session</title>
</head>
<body>
<h3>设置Session</h3>
<%
session.setAttribute("bookName","JAVA编程");
session.setAttribute("price",25.5);
%>
</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=utf-8">
<title>get Session</title>
</head>
<body> <%
String bookName=(String)session.getAttribute("bookName");
double price=(Double)session.getAttribute("price");
%> <p>图书名称:<%=bookName %></p>
<p>图书价格:<%=price %></p> </body>
</html>

  【Application范围】范围更大,浏览器关闭或者换用其他浏览器,也可以访问数据

<%@ 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>Application</title>
</head>
<body> <%
application.setAttribute("bookName","数据库");
application.setAttribute("price",45.85);
%> </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=utf-8">
<title>Application</title>
</head>
<body> <%
String bookName=(String)application.getAttribute("bookName");
double price=(Double)application.getAttribute("price");
%>
<p>图书名称:<%=bookName %></p>
<p>图书价格:<%=price %></p>
</body>
</html>

  知识点:

【获取Request的头信息】jsp引入 枚举

输出 name value

<%@ page import="java.util.*" %>

<%
Enumeration e=request.getHeaderNames();
while(e.hasMoreElements()){
String name=(String)e.nextElement();
String value=request.getHeader(name);
%>
<p><%=name %>    <%=value %></p>
<%
}
%>

  

【Response】示例:每隔一秒刷新时间

<%
response.setIntHeader("Refresh",1);
Date date=new Date();
%>
<h3>时间</h3>
<%=date.toLocaleString() %>

  网页重定向

<h3>网页重定向-客户端跳转</h3>
<%--response.sendRedirect("page4.jsp");--%>

  

<h3>用户登录post</h3>
<form action="login.jsp" method="post">
用户:<input type="text" name="userName" /><br><br>
密码:<input type="password" name="password" /><br><br>
记住我<input type="checkbox" name="remember" value="remember" /><br><br>
<input type="submit" value="提交" />
<input type="reset" value="重置" />
</form>

  login.jsp的代码

<%
String name=request.getParameter("userName");
String pass=request.getParameter("password");
String rem=request.getParameter("remember");
%>
<%=name %>
<%=pass %>
<%=rem %>

  

post get比较
post放在数据包里-get放在Url后面
get数据量小、不安全

【Cookie示例】用户登录记住用户名和密码

<%@ page language="java" contentType="text/html; 

charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
function resetValue(){
document.getElementById("userName").value="";
document.getElementById("password").value="";
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test response</title>
</head>
<body>
<%
String userName=null;
String password=null;
Cookie[] cos=request.getCookies();
Cookie c=null;
for(int i=0;i<cos.length;i++){
c=cos[i];
if(c.getName().equals("nameAndPass")){
//out.println("保存的用户名和密码"+c.getValue ());
userName=c.getValue().split("-")[0];
password=c.getValue().split("-")[1];
}
}
if(userName==null){userName="";}
if(password==null){password="";}
%>
<h3>用户登录post</h3>
<form action="login.jsp" method="post">
用户:<input type="text" name="userName" id="userName" value="<%=userName %>"/><br><br>
密码:<input type="password" name="password" id="password" value="<%=password %>"/><br><br>
记住我<input type="checkbox" name="remember" value="remember" /><br><br>
<input type="submit" value="提交" />
<input type="button" value="重置" onclick="resetValue()" />
</form> </body>
</html>

  

<%@ page language="java" contentType="text/html; 

charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="javax.servlet.http.*" %>
<!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>login.jsp</title>
</head>
<body> <%
String name=request.getParameter("userName");
String pass=request.getParameter("password");
String rem=request.getParameter("remember");
if("remember".equals(rem)){
Cookie c=new Cookie("nameAndPass",name +"-"+pass);
c.setMaxAge(24*60*60*7);//记录一个星期
response.addCookie(c);//保存Cookie
}
response.sendRedirect("page5_response.jsp");
%> </body>
</html>

  【out对象】

<%@ 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>Test out</title>
</head>
<body>
<%
int total=out.getBufferSize();//总缓存大小
int noUse=out.getRemaining();//未使用缓存大小
int u=total-noUse;
%>
<p>总缓存大小:<%=total %></p>
<p>未使用缓存大小:<%=noUse %></p>
<p>已使用缓存大小:<%=u %></p>
</body>
</html>

  【config对象】

config.getInitParameter();//获得xml里的初始化参数param

  【exception异常处理】

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page errorPage="ex2.jsp" %>
<!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>Exception</title>
</head>
<body>
<%
int a=1;
int b=0;
out.println(a/b);
%>
</body>
</html>

  

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page isErrorPage="true" %>
<!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>isErrorPage</title>
</head>
<body> <%
if(exception!=null){
String str=exception.getMessage();
out.println("错误提示信息:<br>");
out.println(str);
}
%> </body>
</html>

  此处需要在浏览器中运行,不在tomcat里运行

【pageContext对象】页面上下文

<%
pageContext.setAttribute("name0","pageInfo");
request.setAttribute("name1","requestInfo");
session.setAttribute("name2","sessionInfo");
application.setAttribute("name3","applicationInfo"); out.println("->"+pageContext.getAttribute("name0")+"<br>");
out.println("->"+pageContext.getRequest().getAttribute("name1")+"<br>");
out.println("->"+pageContext.getSession().getAttribute("name2")+"<br>");
out.println("->"+session.getServletContext().getAttribute("name3")+"<br>");
%>

  

JSP编程-步步为营的更多相关文章

  1. jsp编程

     jsp编程 jsp的实质和工作原理 注释 九大内置对象 jsp文件的结构解析 脚本语法 jsp指令 jsp动作元素 EL表达式 jsp的实质和工作原理: jsp (全称:Java Server Pa ...

  2. 利用JSP编程技术实现一个简单的购物车程序

    实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...

  3. Java EE JSP编程基础

    一.JSP编程介绍 JSP是实现普通静态HTML和动态HTML混合编码的技术,可以说是Servlet的一种变形,相比Servlet它更像普通的Web页面.JSP在第一次运行时会花费很长时间,原因在与其 ...

  4. Servlet编程-步步为营

    [环境]eclipse j2ee;Tomcat 7.0; [模型1] package com.zhiqi; import ...; public class TestServlet extends H ...

  5. Jave工具——servlet+jsp编程中mysql数据库连接及操作通用工具类

    该工具类是在JavaWeb中连接mysql所用到的通用工具类 该类用于Java+Servlet的编程中,方便数据库的操作,连接,获取其列表值.下面是这个数据库操作类的通用方法,基本上能够用于类里面只含 ...

  6. Java Servlet JSP编程(一)

    最近想学学java编程,java现在的应用还是挺广泛的,有必要学习一下. # index.jsp <%@ page language="java" contentType=& ...

  7. Servlet,jsp,JSP技术 ,JSP编程

     一.Servlet 思考 1 浏览器可以直接打开JAVA/class文件吗? 不可以 2浏览器可以打开HTML.JS 文件吗? 可以 3 JAVA程序可以生成HTML文件吗?可以的,用IO流. 4 ...

  8. JSP编程技术5-购物车的实现-session会话对象

    首先十分感谢大家对我的文章的支持,我是个刚刚才找到自己方向的在校大学生,当然我的知识和能力有限,眼下正在努力恶补学习中.当我看到自己首次发表到CSDN首页的文章才几个小时阅读量就超过了100时,对我来 ...

  9. JSP编程中常用的JavaScript技术(转载)

    1.<tronMouseOver=this.style.backgroundColor=’#FFFFFF’ onMouseOut=this.style.backgroundColor=”> ...

随机推荐

  1. 查看运行的KVM的虚机

    [root@ok Desktop]# cat demo.py #!/usr/bin/python import libvirt conn = libvirt.open("qemu:///sy ...

  2. poj 2245 水题

    求组合数,dfs即可 #include<cstdio> #include<iostream> #include<algorithm> #include<cst ...

  3. C语言输出格式总结

    转自:http://www.cnblogs.com/scbzljstudy/archive/2011/02/28/1966887.html 1 一般格式    printf(格式控制,输出表列)    ...

  4. C++的那些事:类的拷贝控制

    1,什么是类的拷贝控制 当我们定义一个类的时候,为了让我们定义的类类型像内置类型(char,int,double等)一样好用,我们通常需要考下面几件事: Q1:用这个类的对象去初始化另一个同类型的对象 ...

  5. 一个自动生成插入与更新SQL语句的小类

    无需关注字段类型,只要传入字段名与值的集合,自动生成Ms sql server SQL语句.详见Test()方法 using System; namespace Fan.iData.SqlUtilit ...

  6. 【HTML5】Web存储

    HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是由 coo ...

  7. EntityFramework 6.0< Code First > 连接 Mysql数据库(转)

    http://blog.csdn.net/kmguo/article/details/19650299 网上有很多关于用EntityFrame来连接Mysql数据库的教程,可是很多并不靠谱,转载的太多 ...

  8. CodeForces 505B Mr. Kitayuta's Colorful Graph

    Mr. Kitayuta's Colorful Graph Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d ...

  9. JavaScript------事件委托(event delegation)

    简单的说,事件委托(event delegation)是在DOM上层(也就是在触发事件的元素的父元素上)定义事件的处理程序,而不是定义在触发事件的元素本身上. 首先我们来举这样一个例子:我有N个li元 ...

  10. 简单几何(直线与线段相交) POJ 1039 Pipe

    题目传送门 题意:一根管道,有光源从入口发射,问光源最远到达的地方. 分析:黑书上的例题,解法是枚举任意的一个上顶点和一个下顶点(优化后),组成直线,如果直线与所有竖直线段有交点,则表示能穿过管道. ...