0
点赞
收藏
分享

微信扫一扫

Jsp学习笔记 - 简单记录一下

星巢文化 2022-01-11 阅读 54
eclipse

html元素

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>html元素</title>
<link rel="stylesheet" type="text/css" href="./css/demo.css" />   
<script src="./js/demo.js"></script>    
</head>
<body>
</body>
</html>

脚本元素

声明(declaration)

<%! 代码内容 %> 
//<% !%>中可以声明方法、属性、全局变量
<%!
    //JSP声明片段: 注意,不建议在JSP页面上定义变量或方法,只是不建议定义
    int i = 10;
    String name = "Vis.Yang";
    public void printName(){
        System.out.println(name);
    }
%>
//注释:符合Java注释

表达式(expression)

<%= 表达式 %> 
//调用已声明/定义的方法或显示已经声明/定义的参数(变量)值
Current time: <%= new java.util.Date() %>
//后面不能加分号

脚本(Scriplets)

<% 程序代码,一行或多行 %> 
// <% %>中可以定义局部变量或者调用方法,但不能定义方法。
<%
 for (int i=0;i<10,i++) {
     ...
     ...
}
%> 
//example

<%if(percent < 0.5) { %>
<jsp:forward page="forward.html"/>
<%
  }else {
%>
<jsp:forward page="forward.jsp"/>
<% } %>

// 多个括号{}需注意用<% %>包起来,否则不生效

指令元素

<%@ 指令名 属性="value" %>   
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %
<-- 指定错误页面路径 -->
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp" %
<-- 将当前页面设置为错误处理页面 -->
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true" %
<-- 前缀 prefix="mytag"    自定义标签的路径 uri="/WEB-INF/helloSimpleTag.tld"-->
<%@ taglib prefix="mytag" uri="/WEB-INF/helloSimpleTag.tld"%>
<-- 使用方法 -->
<mytag:helloworld />
<-- 标签重用 -->

注意

常用指令

page指令

属性描述
language在编写Jsp页面时要用的脚本语言,默认为Java
pageEncoding指定Jsp页面的字符编码,默认是ISO-8859-1 常用 pageEncoding=“UTF-8”
contentType响应的MIME类型,客户端浏览器根据该属性判断文档类型,值默认为 “text/html”
import用来在Jsp页面引入系统或自定义包或类 可以多次使用 或者 逗号隔开包
session用来设置Jsp页面会话对象的可用性,默认为true
errorPage指定一个错误页面,设置值为错误页面的Url
isErrorPage指定是否将当前页面作为Jsp错误页面,默认为false

include指令

<-- body标签内嵌入指定页面 date.jsp -->     <-- 页面插入 作用:提取公共页面/内容 -->   
<%@ include file="date.jsp" %>

动作元素

<jsp:include page="date.jsp">                  <-- 结果插入 --> 
    <jsp:param name="Vis.Yang" age="3"/>          <-- 带参 -->
</jsp:include>

<jsp:include page="date.jsp"/>                   <-- 不带参 -->
<jsp:include page="demo.html" flush="true"/>
<-- 
    将结果引入
-->  
 
<jsp:forward page="forward.jsp"/>              <-- 不带参 -->
    
<jsp:forward page="forward.jsp">               <-- page="forward.jsp":需要转向的页面 -->
    <jsp:param name="Vis.Yang" age="3"/>       <-- 带参 -->
</jsp:forward>
<-- 
    将客户端当前请求,转发到其他的Web资源(去处理请求)
    可以是HTML页面、JSP页面、Servlet等  
    地址栏不变,内容是新页面的内容
-->

Tip: 元素之间不交叉

JavaBean

<--  创建了一个类名为Student的stu1对象 -->
<jsp:useBean id="stu1" class="com.my.bean.Student" scope="作用范围"></jsp:useBean>
<jsp:useBean id="stu2" class="com.my.bean.Student" scope="作用范围"></jsp:useBean>
<-- scope="作用范围" page request session application -->
<-- page:当前页面有效 request:一次请求有效 session:浏览器未关闭就持续有效 application:服务器在则一直在 -->
<-- 等价于 -->
<%
Student stu1=new Student();
Student stu2=new Student();
%>
<-- 获得属性并显示到jsp中 -->
<jsp:getProperty name="stu1" property="name"></jsp:getProperty>
<jsp:getProperty name="stu2" property="name"></jsp:getProperty>
<-- 等价于 -->
<%=stu1.name()%>
<%=stu2.name()%>    
<-- 设置属性-->   
<jsp:setProperty name="stu1" property="name" value="Vis.Yang"></jsp:setProperty>
<-- 等价于 -->
<%
    stu1.setName("Vis.Yang");
%>
<-- 自动加载表单所有类型值到对象里 property="*" -->
<jsp:setProperty name="stu1" property="*"></jsp:setProperty>
<-- 前提:表单名与bean属性名完全一致 -->
<input type="text" name="name" />
<input type="password" name="pwd" />
<-- 只自动加载 name属性值 property="name" -->
<jsp:setProperty name="stu1" property="name"></jsp:setProperty> 

Jsp内置对象

内置对象功能范围
request触发服务调用的请求request
response对请求的应答page
session为请求的客户创建的session对象page
applicationgetServletConfig.getContextsession
out向输出流写入内容的对象application
exception异常处理信息page
pagecontext本JSP的页面上下文page
page实现处理本页当前请求的类的实例,如同Java中thispage
config本JSP的ServletConfig配置信息,web.xml指定page

request

//常用方法
String getParameter(String name)	      //返回name指定参数的参数值
String[] getParameterValues(String name)  //返回包含参数name的所有值的数组

response

<%
response.sendRedirect('sucess.jsp'); //重定向   转到其他页面,浏览器地址改变,区别于 jsp:forward     
response.addCookie();  //加cookie
response.getWriter().println("");    //等于 out.println('');
%>

out

<%
//简单打印输出到浏览器页面
out.print('');
out.println('');
%>

exception

//声明
<%!
   System.out.println(exception.getMessage()); //输出到IDE的console
 %>
//脚本
<%
//输出异常
out.print(exception.getMessage());//输出到页面
//页面换行
out.println("<br>")
System.out.println(exception.getMessage());//输出到IDE的console
%>
//表达式
<%=exception.getMessage()%> //输出到页面

session

String getId();  //获取session创建时JSP引擎为它设置的唯一ID
boolean isNew(); //判断是否是一个新的session
//在不同页面传参数
void setAttribute(String name,Object obj);//设置参数
Object getAttribute(String name)   //取参数
void removeAtribute(String name) //删参数
Enumeration getAttributeNames()  //返回session对象存储的每一个属性对象,其结果为枚举类型。多个参数
void invalidate();取消session对象,并将对象存放的内容完全删除
void setMaxInactiveInterval()设定最大session不活动的时间,若为负值,则永远不超时。
int getMaxInactiveInterval()获取最大session不活动的时间
long getCreationTime()//获取session的创建时间
long getLastAccessedTime()获取session对象最后一次被操作的时间

application

void setAttribute(String name, Object object); //设置属性,指定属性名称和属性值。
String getAttribute(String name); //根据属性名称获取属性值。
Enumeration getAttributeNames(); //获取所有的属性名称。
void removeAttribute(String name); //根据属性名称删除对应的属性。
String getServletInfo(); //获取当前Web服务器的版本信息。
String getInitParameter(String name); //根据初始化参数名称,获取初始化参数值。
int getMajorVersion(); //获取Servlet API的主版本号。
int getMinorVersion(); //获取Servlet API的次版本号。
void log(String message)//将信息写入日志文件中。 

两者区别

Example

//网站访问次数统计
<%>
//第一次访问数据为空
    Object obj=session.getAttribute("count");
//用户第一次访问
if(obj==null){
session.setAttribute("count",1);
}else{
    Integer num=(Integer)obj;
   session.setAttribute("count",++num);
}
}
<%>
第几次访问这个网站:<%=session.getAttribute("count")%>

application 统计更推荐
<--用不同浏览器访问时,计数器不会连续累计-->
<%>
//第一次访问数据为空
    Object obj=application.getAttribute("count");
//用户第一次访问
if(obj==null){
application.setAttribute("count",1);
}else{
    Integer num=(Integer)obj;
   application.setAttribute("count",++num);
}
}
<%>
第几次访问这个网站:<%=application.getAttribute("count")%>


exception

//常用方法
exception.getMessage();
exception.toString();
<%=exception.toString()%>  //显示异常

//使用前需要将当前页设置为错误处理页面   isErrorPage="true"
<-- 将当前页面设置为错误处理页面 -->
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true" %
request response session application 共享数据
out  输出数据到浏览器页面
exception  处理异常
${pageContext.request.contextPath}  获取web资源路径

游动查询

ResultSet.TYPE_FORWARD_ONLY   //只可以向前滚动
ResultSet.TYPE_SCROLL_INSENSITIVE //双向滚动,但不及时更新,即使数据库的数据修改过,并不在ResultSet中反应出来
ResultSet.TYPE_SCROLL_SENSITIVE   //双向滚动,并及时跟踪数据库的更新,以便更改ResultSet中的数据
ResultSet.CONCUR_READ_ONLY   //缺省,或者显示声明,指定不可以更新ResultSet
ResultSet.CONCUR_UPDATABLE   //指定可以更新ResultSet
// Statement statement=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY );

常用方法

void last();//定位到最后一行
int getRow();//获得当前行
举报

相关推荐

0 条评论