`
guiqing85
  • 浏览: 162917 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JSP学习笔记(一)

阅读更多
1 What is JSP.
1)什么是JSP
JSP: Java Server Page, Java EE组件,本质上是Servlet。
运行在Web Container.接收Http Request,生成Http Response
JSP使得我们能够分离页面的静态HTML和动态部分。

2 Why,Where and How JSP.
1)为什么需要JSP
Servlet: java class ---> out.println("<html>");
Jsp: script language ---> <html>

2)Jsp用在哪里
UI,表现层
Servlet----->Controll
图解JSP与Servlet的分工合作(比较没有JSP之前Servlet是如何唱独角戏)
a)单独使用Servlet。
b)单独使用JSP(Model 1)。
c)结合JSP和Servlet(Model 2)。

3)如何开发Jsp
Jsp文件后缀名--->.jsp
Jsp文件的组成--->html+jsp脚本元素(Java语言编写)
不用在web.xml中配置

http://localhost:8080/baseJSP/welcome.jsp
<%!String words="Welcome to our homepage,welcome to SD0702...";%>
<%=words%>

3 JSP Principle.
图解运行原理

4 Base JSP(Statement,Script,Expression,Direction,Action).

1)Jsp声明 <%! %>
声明类成员
<%!int i=100;%>
<%!String word="春田花花大学";%>
<%!private int counter=0;
public int count(){
return ++counter;
}
%>
<h1><%=count()%></h1>


2)Jsp脚本 <% %>
_jspService()中的局部代码
<%System.out.println("Hi,I like JSP.");%>
<%Connection conn=DriverManager.getConnection();
  Statement st=con.createStatement();
  String sql="select ...";
  ResultSet rs=st.executeQuery(sql);
%>

比较
<%!int i=100;%>    //成员变量
<%int i=100;%>     //_jspService()方法中的局部变量

<%!public void hello(){}%>
<%public void hello(){}%>  //error


3) 表达式 <%= %>
输出数据至页面的当前位置
<%="Hello,JSP world!"%>
<%=name%>                  //<%!String name="GiGi";%>
<%=new java.util.Date()%>


4)指令 <%@ %>
page
include
taglib

page指令---->import,session,isThreadSafe,errorPage,etc

import--->导入其它的包或类
<%@page import="java.util.Date"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*,java.io.*,java.net.*"%>

session--->当前Jsp是否参与会话 default--->true
<%@page session="true"%> request.getSession();
<%@page session="false"%>
session="true"时,可用内建对象session直接访问会话
<%=session.getAttribute("name")%>

isThreadSafe--->当前Jsp页面是否线程安全 default--->true
<%@page isThreadSafe="true"%> 普通的Servlet,可以并发处理用户请求
<%@page isThreadSafe="false"%> 相当于Servlet实现了SingleThreadModel
接口,不能并发处理请求(强烈要求禁止使用该属性)

errorPage
isErrorPage--->Jsp页面中出现异常的处理方式
对于有可能出现异常的页面
<%@page errorPage="error.jsp"%>

对于处理异常的页面
<%@page isErrorPage="true"%>

contentType--->设置Jsp内容的MIME类型
<%@page contentType="text/html; charset=gbk"%>
等价于Servlet:response.setContentType("text/html; charset=gbk");

include指令--->file
把目标页面的内容包含到当前页面,产生页面叠加以后的输出效果
<%@include file="title.html"%>
<%@include file="booter.jsp"%>
在Jsp编译的时候被处理

taglib指令(放在JSTL处详细讲)
<%@ taglib uri="http://www.polaris.com/tree" prefix="tree" %>

<tree:gen/>  //产生一个默认的树
自定义标签(可选)

5)动作 <jsp:actionName attributeName=attributeValue/>
jsp:forward
jsp:include
jsp:useBean
jsp:setProperty
jsp:getProperty

<jsp:forward page=""/>

<jsp:forward page="b.jsp"/>相当于Servlet中通过RequestDispatcher.forward()

<jsp:include page=""/>
<jsp:include page="b.jsp"/>相当于Servlet中通过RequestDispatcher.include()
与<%include file=""/>比较:动作在运行期处理

Jsp中的注释:
a、java方格注释 编译器会忽略掉此类注释中的内容
<%--ur comments--%>
<%//ur comments%>
<%/*ur comments*/%>
<%//new java.util.Date()%>

b、html风格注释 编译器会执行此类注释中的代码
<!--ur comments-->
out.println("<!--ur comments-->")
<!--new java.util.Date()-->

例子:
1)关于外星人的问卷调查
我欢迎外星人进入我们的世界,帮助我们发展。
我害怕外星人,无法接受他们进入我们的世界。
外星人很神秘,我不知道存不存在外星人。
我喜欢听UFO的故事,但也许那只是一些很好玩的故事而已。
不要和我谈论外星人,地球人已经很复杂了。

如果有外星人,我想和他们说:
             嘿嘿,我们可以做朋友么?

2)NumberGuess.jsp
菜一个数字,如果猜对显示恭喜信息,猜错则提示客户猜的数字太小还是太大了。

5 JSP,Life cycle(与Servlet的生命周期比较).
//JSP容器第一次装载jsp文件时调用一次
public void _jspInit(){
System.out.println(this.getClass()+":entering _jspInit()...");
}

//每个请求都要调用一次
public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {
        }

//jsp文件被修改时,JSP容器会销毁旧的jsp文件对应的对象,
//重新装载一次更新后的jsp文件的内容(只调用一次)      
public void _jspDestroy(){
System.out.println(this.getClass()+":entering _jspDestroy()...");
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics