1.jsp获取当前系统时间:使用Date对象的toString()方法。
<body>
<%
Date date=new Date();
%>
当前时间为 <%=date.toString() %>
</body>
2.jsp日期比较
- 使用getTime()方法得到毫秒数,然后比较毫秒数就行了。
- 使用before(),after(),equals()方法。比如,new Date(99,2,12).before(new Date(99,2,18))返回true。
- 使用compareTo()方法,这个方法在Comparable接口中定义,在Date中实现。
3.jsp格式化日期:使用SimpleDateFormat格式化
<body>
<%
Date date=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
%>
当前时间为 <%=date.toString() %><br>
格式化:<%=df.format(date) %>
</body>
4.jsp页面重定向
<body>
<%
// 重定向到新地址
//方法一:response对象的sendRedirect()方法
response.sendRedirect("http://www.runoob.com");
//方法二
String site = new String("http://www.runoob.com");
response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", site);
%>
</body>
5.点击统计访问量
要实现一个计数器,您可以利用应用程序隐式对象和相关方法getAttribute()和setAttribute()来实现。
这个对象表示JSP页面的整个生命周期中。
<body>
<%
Integer hitsCount =
(Integer)application.getAttribute("hitCounter");
if( hitsCount ==null || hitsCount == 0 ){
/* 第一次访问 */
out.println("欢迎!");
hitsCount = 1;
}else{
/* 返回访问值 */
out.println("再次欢迎!");
hitsCount += 1;
}
application.setAttribute("hitCounter", hitsCount);
%>
<p>页面访问量为: <%= hitsCount%></p>
</body>
6.jsp自动刷新
<%
// 设置每隔5秒刷新一次
response.setIntHeader("Refresh", 5);
%>
7.jsp连接数据库
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DataBaseConnection {
private static String driverStr="com.mysql.jdbc.Driver";//驱动列表
private static String connStr="jdbc:mysql://localhost/mySql";//mySql是我自己的数据库名
private static String dbusername="root";//数据库用户名
private static String dbpassword="12345678";//密码和数据库一致
private static Connection conn=null;//数据库的连接对象
private static Statement stmt=null;//创建Statement对象
public DataBaseConnection() { }
//一个静态方法,返回一个数据库的连接,这样达到了对数据库连接统一控制的目的
public static Connection getConnection() throws SQLException {
try{
Class.forName(driverStr);//加载驱动程序
conn = DriverManager.getConnection(connStr,dbusername, dbpassword);//连接数据库
}
catch(Exception ex){System.out.println("无法同数据库建立连接!");}
return conn;
}
public int executeUpdate(String s)
{
int result=0;
try{
stmt = conn.createStatement();//创建Statement语句
result=stmt.executeUpdate(s);//执行更新语句
}
catch(Exception ex){System.out.println("执行更新错误!");}
return result;
}
public ResultSet executeQuery(String s)
{
ResultSet rs=null;
try{rs=stmt.executeQuery(s);}//执行查询语句
catch(Exception ex){System.out.println("执行查询错误!");}
return rs;
}
public static void close()//关闭与数据库的连接
{
try{
stmt.close();
conn.close();
}
catch(Exception e){}
}
public static void main(String[] args) {
try {
Connection conn=DataBaseConnection.getConnection();
if(conn!=null)
{
System.out.println("连接数据库正常");
}
else {
System.out.println("连接数据库异常");
}
} catch (Exception ex) {
// TODO: handle exception
ex.printStackTrace();
}
}
}
8.jsp的JavaBean
JavaBean是特殊的Java类,使用Java语言书写,并且遵守JavaBean API规范。
接下来给出的是JavaBean与其它Java类相比而言独一无二的特征:
- 提供一个默认的无参构造函数。
- 需要被序列化并且实现了Serializable接口。
- 可能有一系列可读写属性。
- 可能有一系列的"getter"或"setter"方法。
public class StudentsBean implements java.io.Serializable
{
private String firstName = null;
private String lastName = null;
private int age = 0;
public StudentsBean() {
}
public String getFirstName(){
return firstName;
}
public String getLastName(){
return lastName;
}
public int getAge(){
return age;
}
public void setFirstName(String firstName){
this.firstName = firstName;
}
public void setLastName(String lastName){
this.lastName = lastName;
}
public void setAge(int age) {
this.age = age;
}
}
访问JavaBean:
<jsp:useBean id="bean 的名字" scope="bean 的作用域" typeSpec/>
<body>
<jsp:useBean id="date" class="java.util.Date" />
<p>日期为:<%= date %>
</body>
访问JavaBean对象属性
在 <jsp:useBean> 标签主体中使用 <jsp:getProperty/> 标签来调用 getter 方法,使用 <jsp:setProperty/> 标签来调用 setter 方法,语法格式如下:
<jsp:useBean id="id" class="bean 编译的类" scope="bean 作用域"> <jsp:setProperty name="bean 的 id" property="属性名" value="value"/> <jsp:getProperty name="bean 的 id" property="属性名"/> ........... </jsp:useBean>
<body>
<jsp:useBean id="students"
class="com.runoob.StudentsBean">
<jsp:setProperty name="students" property="firstName"
value="小强"/>
<jsp:setProperty name="students" property="lastName"
value="王"/>
<jsp:setProperty name="students" property="age"
value="10"/>
</jsp:useBean>
<p>学生名字:
<jsp:getProperty name="students" property="firstName"/>
</p>
<p>学生姓氏:
<jsp:getProperty name="students" property="lastName"/>
</p>
<p>学生年龄:
<jsp:getProperty name="students" property="age"/>
</p>
</body>
//结果
学生名字: 小强
学生姓氏: 王
学生年龄: 10
9.九大内置对象
(1. request对象
request对象是javax.servlet.http.HttpServletRequest对象的一个实例。每当客户端请求页面时,JSP引擎将创建一个新对象来表示该请求。
request对象提供了获取包括表单数据,Cookie,HTTP方法等HTTP头信息的方法。
(2. response对象
response
对象是javax.servlet.http.HttpServletResponse
对象的一个实例。就像服务器创建request
对象一样,它还创建一个对象来表示对客户端的响应。
response
对象还定义了处理创建新HTTP头的接口。通过此对象,JSP程序员可以添加新的Cookie或日期戳,HTTP状态代码等。
(3. out对象
out
隐式对象是javax.servlet.jsp.JspWriter
对象的一个实例,用于在响应中发送内容。
初始化JspWriter
对象根据页面是否缓存而不同地实例化。缓冲可以通过使用page
指令的buffered ='false'
属性来关闭。
JspWriter
对象包含与java.io.PrintWriter
类大部分相同的方法。但是,JspWriter
还有一些额外的方法用来处理缓冲。与PrintWriter
对象不同,JspWriter
会抛出IOExceptions
异常。
(4. session对象
session
对象是javax.servlet.http.HttpSession
的一个实例,其行为与Java Servlet下的会话对象行为完全相同。session
对象用于跟踪客户端请求之间的客户端会话。
(5. application对象
application
对象是生成的Servlet
的ServletContext
对象的直接包装,实际上是javax.servlet.ServletContext
对象的一个实例。
application
对象是JSP页面在其整个生命周期中的表示。 当JSP页面被初始化时,将创建此对象,并且在JSP页面被jspDestroy()
方法删除时application
对象也将被删除。
通过向application
对象添加属性值,可以确保组成Web应用程序的所有JSP文件都可以访问它。
(6. config对象
config
对象是javax.servlet.ServletConfig
的实例化,是生成的servlet的ServletConfig
对象周围的直接包装。
(7. pageContext对象
pageContext
对象是javax.servlet.jsp.PageContext
对象的一个实例。pageContext
对象用于表示整个JSP页面。
(8. page对象
page
对象是对该页面实例的实际引用。可以认为它是表示整个JSP页面的对象。
page
对象是this
对象的直接同义词。
(9. exception对象
exception
对象是一个包含上一页抛出的异常的包装器。它通常用于生成对错误条件的适当响应。
10.四大作用域
- page(pageContext):只在一个页面中保存属性。 跳转之后无效。
- request:只在一次请求中有效,服务器跳转之后有效。 客户端跳无效
- session:再一次会话中有效。服务器跳转、客户端跳转都有效。 网页关闭重新打开无效
- application:在整个服务器上保存,所有用户都可使用。 重启服务器后无效