`
yidongkaifa
  • 浏览: 4060021 次
文章分类
社区版块
存档分类
最新评论

JSP学习笔记(1) -- JSP 2.0基础

 
阅读更多

1.服务器,选用了Resin,用它自己的http服务器,没有用IIS或Appach

2. 编辑器,下载了Eclipse Jee版

3. 改了页面之后发现不能立即更新显示,显示的一直是旧的页面,而改CSS文件后一刷新即可,先考虑可能是Resin的缓冲,但得启了几次都不行,后来打开网站的目录一看WEB-INF文件夹,里面是编译后的Java文件,怀疑可能是第一次运行时全部编译,完了之后就不再编译,不能跟ASP.NET一样更改某个文件的源码之后立即编译。我把这个文件夹里的文件删掉之后再打开页面就是更新过的了。
现在还没有系统学习,在这儿瞎摸着先玩玩吧,肯定还得系统学习一下。

4. Servlet
就好比ASP.NET的一个页面,客户端请求时调入内存,执行完毕则释放资源。一个简单的Servlet示例:(helloServelet.java)
package tw.com.javaworld.CH2;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloServlet extends HttpServlet {
//Initialize global variables

public void init(ServletConfig config) throws ServletException {
super.init(config);
}

//Process the HTTP Get request
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GB2312");
PrintWriter out = response.getWriter();
out.println("/n

CH2 - HelloServlet/n");
out.println(" Hello World
");
out.println("大家好");
out.println("/n");
out.close();
}

//Get Servlet information
public String getServletInfo() {
return "tw.com.javaworld.CH2.HelloSerlvet Information";
}
}

所有Servlet 都必须实现javax.servlet.Servlet 接口(Interface),但是通常我们都会从
javax.servlet.GenericServlet 或javax.servlet.http.HttpServlet 择一来实现。若写的Servlet
程序和HTTP 协议无关,那么必须继承GenericServlet 类;若有关,就必须继承HttpServlet 类。

配置web.xml

Java爱好者 http://www.javafan.net制作
}
public void destroy() {
}
}
从Sayhi.java的程序当中,可以发现Servlet是利用HttpServletRequest类的getParameter( )
方法来取得由网页传来的数据。不过数据通过HTTP协议传输时会被转码,因此在接收时,必须再做转
码的工作,才能够正确地接收到数据。下面这段程序是做转码的动作:
request.setCharacterEncoding("GB2312");
编译Sayhi.java 之后,再来设定web.xml:
<servlet><br><servlet-name>Sayhi</servlet-name><br><servlet-class>tw.com.javaworld.CH2.Sayhi</servlet-class><br></servlet>
<servlet-mapping><br><servlet-name>Sayhi</servlet-name><br><url-pattern>/CH2/Sayhi</url-pattern><br></servlet-mapping>

5. JSP = Elements + Template Data
Elements = Directive| Scripting | Action | EL Elements : <tag attr="value">text</tag>或<tag attr="value"></tag>由Container处理的部分
Template Data是不用处理直接给客户端的部分,如HTML

6.注释
客户端可以看得到的:<!-- <%=expression%> --> 里面可以有Java脚本
客户端看不到的:

7.Quoting 和Escape 规则
特殊字符:' ==> /'; " ==> /"; / ==> //; < > ==> >

8. Directive Elements


或用XML语法 <directive.page attr1="value1" attr2="value2"></directive.page>

page指令
属性language(基本不用,默认为java),
extend="className",
import="package1.*, package2.*",
session="true | false",
buffer="none | size in kb"(默认8k)
autoFlush = "true | false"(true,溢出会抛出异常)
isThreadSave = "true | false" (true,false=singleThread)
info="Text",
erroPage = "error_url",
isErrorPage="true | false"
conentType="text/html;charset=utf-8";
pageEncoding="utf-8",
isELIgnored="true | false"
其中只有import属性可以设定两次或以上,其它属性只能设定一次

Include指令
或<directive.include file="relativeURLspec"></directive.include>

taglib 指令


<directive.taglib uri="tagLibraryURI" prefix="tagPrefix"></directive.taglib>

9. Scripting Elements

声明:
eg. , 每一个声明仅在一个页面中有效

Scriptlets:

表达式:

10. Action Element
以XML语法为基础

<include><br></include><include page="{urlSpec | &lt;%= expression %&gt;}" flush="true | false "></include>
或:
<include page="{urlSpec | &lt;%= expression %&gt;}" flush="true | false"><br><param name="PN" value="{PV | &lt;%= expression %&gt;}"> * <br></include>
eg.
<include page="scripts/login.jsp"><param name="username" value="browser"> <br><param name="password" value="1234"> <br></include>

<forward></forward> 将客户端所发出来的请求,从一个JSP 网页转交给另一个JSP网页,之后的程序将不能执行
<forward page='{"relativeURL"' expression>"} /&gt; <br>或: <br><forward page='{"relativeURL"' expression>"} &gt; <br><param name="PN" value="{PV | &lt;%= expression %&gt;}"> * <br></forward></forward>

用来提供key/value 的信息

<plugin>、<params>和<fallback></fallback></params></plugin>
对应于HTML中的或标签,

<plugin type="bean | applet"></plugin>code="objectCode" // 以.class结尾
codebase="objectCodebase" // java类目录
[ align="alignment" ]
[ archive="archiveList" ]
[ height="height" ]
[ hspace="hspace" ]
[ jreversion="jreversion" ]
[ name="ComponentName" ]
[ vspace="vspace" ]
[ width="width" ]
[ nspluginurl="URL" ]
[ iepluginurl="URL" ] >
[ <params><br>[ <param name="PN" value="{PV | &lt;%= expression %&gt;}"> ] + <br></params> ]
[ <fallback> text message for user </fallback> ] //不能启动时显示的内容

<element>、<attribute>和</attribute></element> 元素用来动态定义XML 元素标签的值<element name="name"><br>本体内容 <br></element>
或:
<element name="name"><br><attribute><br>… <br></attribute><br>… <br><br>… <br><br></element>

11. 错误处理
一段简单的错误处理页面的代码:




CH4 - Error.jsp


ErrorPage.jsp 错误产生:



     
问题如下:


12。属性与作用域
request、session、application 和pageContext可以使用setAttribute( )和getAttribute( )来操作
Page: pageContext, 只在本页内有效
Request: 从一个请求到另一个页面间,如使用<forward>指令的操作 <br>Session:用户的一个会话 <br>Application:服务器从启动到关闭 <br>注意,getAttribute传回的是java.lang.Object对象,使用时需要进行类型转换,与ASP.NET的HttpSession对象类似</forward>

13. Servlet 中的隐含对象
page:页面本身,
config:初始的数据结构,config 对象实现于javax.servlet.ServletConfig 接口,它共有下列四种方法:
public String getInitParameter(name)
public java.util.Enumeration getInitParameterNames( )
public ServletContext getServletContext( )
public Sring getServletName( )
上述前两种方法可以让config对象取得Servlet 初始参数值,如果此数值不存在,就传回null。

request:包含所有请求的信息,如:请求的来源、标头、cookies和请求相关的参数值等等。
在JSP 网页中,request 对象是实现javax.servlet.http.HttpServletRequest 接口的,FORM中的表单的值可以使用getParameter()读取

response 对象主要将JSP 处理数据后的结果传回到客户端。response 对象是实现javax.servlet.http.HttpServletResponse 接口
eg. 每隔三分钟,就重新加载此网页:
response.setIntHeader("Refresh" , 180)
如果想要过十秒后,调用浏览器转到http://Server/Path 的网页时,可用如下代码:
response.setHeader("Refresh","10; URL=http://Server/Path" )
如果大家对HTML 语法还熟悉,则HTML 语法中也有类似的功能:
<meta http-equiv="Refresh" content=" 10; URL=&lt;a href=" http:>http://Server/Path" >

out 对象能把结果输出到网页上。

session 对象表示目前个别用户的会话(session)状况,用此项机制可以轻易识别每一个用户,
然后针对每一个别用户的要求,给予正确的响应。

application 对象实现javax.servlet.ServletContext 接口,它主要功用在于取得或更改
Servlet 的设定。

pageContext对象能够存取其他隐含对象,范围参数有四个常数,分别代表四种范围:PAGE_SCOPE 代表Page范围,REQUEST_SCOPE代表Request
范围,SESSION_SCOPE 代表Session 范围,最后APPLICATION_SCOPE 代表Application 范围

exception 对象,若要使用exception 对象时,必须在page 指令中设定。

分享到:
评论

相关推荐

    jsp2.0 学习笔记+完整源码

    jsp2.0 学习笔记+完整源码,包含了JSP开发中要用到的知识.

    JSP 2.0 完整笔记+源码

    我在学习JSP 2.0 时作的完整笔记+源码,希望能对JSP的学习者有所帮助.

    jsp笔记帮助学习jsp

    jsp2.0技术手册jsp2.0技术手册jsp2.0技术手册jsp2.0技术手册jsp2.0技术手册jsp2.0技术手册jsp2.0技术手册

    voa英语听力学习平台jsp版 v2.0.rar

    6、发布个人学习笔记,并对学习笔记进行维护;7、支付宝在线支付接口,实现在线购买服务功能;8、个人信息管理,个人界面方案维护;9、信息反馈及维护;10、JavaMail邮件发送功能实现。各功能模块的稳定性都经过了...

    JSP2_0技术学习笔记

    对学习jsp技术的总结 jsp标签的应用

    Java/JavaEE 学习笔记

    JSP学习笔记..................236 JSP前言.................236 第一章 Introduction to JSP...............238 第二章 Creating,Deploying and Executing a JSP..................239 第三章 JSP Scriplets,...

    J2EE学习笔记(J2ee初学者必备手册)

    JSP学习笔记..................236 JSP前言.................236 第一章 Introduction to JSP...............238 第二章 Creating,Deploying and Executing a JSP..................239 第三章 JSP Scriplets,...

    SSH(Struts+spring+hibernate)整合资料

    java(1) 整合入门(spring,struts,hibernate的整合)资料(1) 中大软件工厂项目前培训资料(1) 完整笔记+源码(1) ssh(1) C#查询参数化例子(1) 学习笔记+完整源码(1) 介绍与深入(1) 学习笔记(不含整合)(1) C#(1) .CHM格式...

    AppFuse学习笔记(J2EE入门级框架)

    Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、Struts、xDcolet、Junit、Taperstry、JSF等基础框架给出了示范。在持久层,AppFuse采用了Hibernate O/R映射...

    appfuse 学习笔记

    Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、Struts、xDcolet、Junit、Taperstry、JSF等基础框架给出了示范。在持久层,AppFuse采用了Hibernate O/R映射...

    整理后java开发全套达内学习笔记(含练习)

    int 32bit, -2^31~2^31-1 (2147483648,20亿,10位有效数字) long 64bit, -2^63~2^63-1 (900亿亿,20位有效数字) float 32bit, 9位有效数字,含小数(四舍五入)(小数点算一位,正负号不算) double 64bit, 18位...

    复读365英语在线学习平台1.2版

    6、发布个人学习笔记,并对学习笔记进行维护; 7、支付宝在线支付接口,实现在线购买服务功能; 8、个人信息管理,个人界面方案维护; 9、信息反馈及维护; 10、JavaMail邮件发送功能实现。 项目演示地址:...

    swing界面设计之JTree

    (十七) Swing 学习笔记 108 Swing API 包括18个公共包: 108 例程1.1 HelloWorldSwing.java 109 例程2.2 HelloWorldJFrame.java 110 (十八) 动态加载文件树的java程序 111 FileSystemTree.java源代码 112 //内部类 ...

Global site tag (gtag.js) - Google Analytics