JSP/Servlet基础语法

2020-12-13 04:05

阅读:220

YPE html>

标签:des   style   blog   class   code   c   

相关学习资料

soscw.com,搜素材
http://my.oschina.net/chape/blog/170247
http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp/web_xml.html
http://blog.csdn.net/liaoxiaohua1981/article/details/6761053
http://computer.c.blog.163.com/blog/static/102524482012314537670/
http://www.blogjava.net/w2gavin/articles/358641.html
http://www.douban.com/note/310522851/
http://mianhuaman.iteye.com/blog/1105522
http://blog.csdn.net/li_jinjian2005/article/details/2915462
http://210.44.193.6/JSP/07.htm
http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/
soscw.com,搜素材

 

目录

1. J2EE WEB应用文件目录结构
2. web.xml基础语法
3. JSP基础语法
4. Servlet基础语法

 

1. J2EE WEB应用文件目录结构

Java Web应用由一组静态HTML页、Servlet、JSP和其他相关的class组成,它们一起构成一个大的工程项目。每种组件在Web应用中都有固定的存放目录。Web应用的配置信息存放在web.xml文件中。在发布某些组件(如Servlet)时,必须在web.xml文件中添加相应的配置信息
Java Web应用程序必须使用规范的目录结构

soscw.com,搜素材
1. 应用程序根目录,可以取任意的名字,所有的HTML、JSP文件都放在这个目录下
    1.1 WEB-INF目录: 必须目录 
        1.1.1 web.xml: Web应用部署描述文件,必须文件
        1.1.2 classes目录: 
            1) 用于存放单个*.classes字节码文件,Servlet类文件也存放在这个目录下
        1.1.3 lib目录: 
            1) 存放第三方类库文件,即打包后的JAR文件
        1.1.4 TLD文件: 标签库描述文件 
    1.2 其他静态文件:
        1.2.1 HTML
        1.2.2 CSS
        1.2.3 JavaScript
        1.2.4 图片等
    1.3 *.jsp: 存放任意多个JSP页面
soscw.com,搜素材

 

2. web.xml基础语法

位于每个WEB应用的的WEB-INF路径下的web.xml文件被称为配置描述符,这个web.xml文件对于Java Web应用十分重要,总体来说,web.xml主要负责以下内容:

soscw.com,搜素材
1. JSP环境参数初始化
2. 配置和管理Servlet
3. 配置和管理Listener
4. 配置和管理Filter
5. 配置和管理JNDI
6. Session配置
7. MIME TYPE配置
8. 错误处理
9. 配置标签库
10. 配置JSP属性
11. 配置和管理JAAS授权认证
12. 配置和管理资源引用
13. WEB应用默认首页(welcome文件)的设置
soscw.com,搜素材

下面我尽量列出了一个完整的web.xml的结构,我使用了/**/注释符来说明某个项目的说明,要明白的是,在真实的web.xml中不允许使用/**/注释符的,只是我觉得直接在web.xml中插入解释说明能更好的说明问题

soscw.com,搜素材
/*
是一个基本的XML文件的框架,不管是什么配置文件,只要是基于XML的,它的基本结构都是这样
*/
"1.0" encoding="GBK"?>
/*
web.xml文件的根元素是元素,整个web.xml只有这个根元素,每个web.xml必须以这个根元素作为开头,在Servlet 3.0规范中,该元素新增了
metadata-complete属性,当该属性值为true时,该web应用"不会"加载Annotation配置的WEB组件(如Servlet、Filter、Listener等),反之则加载
*/ "http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> /* 1. icon信息: 用来指定web站点中小图标和大图标的路径 1) small-icon: 大小为16 X 16 pixel,但是图象文件必须为GIF或JPEG格式,扩展名必须为:.gif或 .jpg. 2) large-icon: 大小为32 X 32 pixel,但是图象文件必须为GIF或JPEG的格式,扩展名必须为; gif 或jpg. */ /路径/smallicon.gif/路径/largeicon-jpg/* 2. 描述信息 display-name: 定义站点的名称 description: 对站点的描述 */ 站点名称站点描述 /* 3. distributable distributable元素为空标签,它的存在与否可以指定站台是否可分布式处理.如果web.xml中出现这个元素,则代表站台在开发时已经被设计为能在多个JSP Container之间分散执行 */ /* 4. JSP环境参数: context-param context-param元素用来设定web站台的环境参数(context),它包含两个子元素: 1) param-name: 参数名称 2) param-value: 值 此所设定的参数,在JSP网页中可以使用下列方法来取得: ${initParam.param_name} 若在Servlet可以使用下列方法来获得: String param_name=getServletContext().getInitParamter("param_name"); */ param_nameparam_value/* 5. filter过滤器、filter-mapping 用于指定WEB容器的过滤器,在请求和响应对象在Servlet处理之前和之后,可以通过此过滤器对这两个对象进行处理 filter-class 中指定的过滤器类须继承 javax.servlet.Filter具有须有以下三种方法 init(FilterConfig filterConfig):初始化;一般情况下时读取配置文件中的init-param参数值 如 filterConfig.getInitParameter("encoding") doFilter(...):用于对request,response进行处理,并能过chain.doFilter(...) 交过下一个控制器 destroy():资源销毁 filter-mapping则指示需要进行过滤器处理的URL访问模式,可以理解为当我们的URL匹配到指定的模式后,则对这个请求执行指定的"过滤处理流程"(可以把它理解为一种路由机制) */ /路径/smallicon.gif/路径/largeicon-jpgencodingfilter站点名称站点描述 class>com.my.app.EncodingFilterclass> encodingUTF-8encodingfilter/* /* 6. servlet、servlet-mapping 和filter过滤器类似,servlet也是用来配置映射处理机制的 和filter-mapping的作用类似,servlet-mapping用来定义servlet所对应URL. */ /路径/smallicon.gif/路径/largeicon-jpgMyServletName站点名称站点描述 /* servlet-class、jsp-file有且只能出现一个 */ class>com.Little.MyServletclass> /path/index.jspname1value1/* 指定当Web应用启动时,装载Servlet的次序 1) 当值为正数或零时: 容器在应用启动时就加载这个servlet,Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet 2) 当值为负或未定义: 容器在该servlet被选择时才加载,即Servlet容器将在Web客户首次访问这个servlet时加载它 */ /* 设定运行时角色,可以使当前Servlet以一个特定的角色运行,有利于安全权限控制 */ as> Security role for anonymous accesstomcatas> /* security-role-ref子元素提供出现在服务器专用口令文件中的安全角色名的一个别名。例如,假如编写了一个调用 request.isUserInRole("boss")的servlet,
但后来该servlet被用在了一个其口令文件调用角色manager而不 是boss的服务器中。下面的程序段使该servlet能够使用这两个名称中的任何一个
*/ ref> bossmanagerref>
LoginChecker/LoginCheckerMyServletName/* 7. security-role(虚拟安全用户) 给出安全角色的一个列表,这些角色将出现在servlet元素内的security-role-ref元素的role-name元素中。分别声明角色可使高级IDE处理安全信息更为容易。 */ 安全账户描述 admin/* 8. listener 监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,Servlet本身在一些特定的关键处理流程节点上增加Hook
回调机制,使得我们可以在这些节点位置配置监听器 常见的监听器如下: Listener接口 1) ServletContextListener: ServletContextEvent 2) ServletContextAttributeListener: ServletContextAttributeEvent 3) HttpSessionListener: HttpSessionEvent 4) HttpSessionActivationListener: HttpSessionAttributeListener 5) HttpSessionBindingEvent: HttpSessionBindingListener 6) ServletRequestListener: ServletRequestEvent 7) ServletRequestAttributeListener: ServletRequestAttributeEvent
*/ class>org.springframework.web.context.request.RequestContextListenerclass> /* 9. session配置 session-config包含一个子元素session-timeout.定义web站台中的session参数,定义这个web站台所有session的有效期限.单位为分钟 */ 20/* 10. mime-mapping mime-mapping包含两个子元素extension和mime-type.定义某一个扩展名和某一MIME Type做对映,和apache中的文件扩展处理器原理类似,对指定的扩展名指定相应的处理程序 */ docapplication/vnd.ms-wordxlsapplication/vnd.ms-excel/* 11. welcome-file-list welcome-file-list包含一个子元素welcome-file.用来定义首页列单,即当客户端的请求没有指定具体的页面时,服务区器默认指定的首页脚本 */ index.jspindex.htm/* 12. error-page 错误处理机制,error-page元素包含三个子元素error-code,exception-type和location.将错误代码(Error Code)或异常(Exception)的种类对应到web站点资源路径。
简单来说就是返回特定HTTP状态代码或者特定类型的异常被抛出时,制定响应将要显示的页面。
*/ 404java.lang.Exception/error404.jspjava.lang.Exceptionjava.lang.NullException/except.jsp/* 13. jsp-config JSP相关配置 */ /* taglib-uri定义TLD文件的URI,JSP网页的taglib指令可以经由这个URI存取到TLD文件 */ Taglib/* taglib-location定义TLD文件对应Web站台的存放位置 */ /WEB-INF/tlds/MyTaglib.tld Special property group for JSP Configuration JSP example. JSPConfiguration/* 设定值所影响的范围,如:/CH2 或者/*.jsp */ /* /* 若为true,表示不支持EL语法 */ true/* 设定JSP网页的编码 */ GB2312/* 若为true表示不支持语法. */ true/* 设置JSP网页的结尾,扩展名为.jspf */ .jspf/* 设置JSP网页的抬头,扩展名为.jspf */ .jspf/* 14. resource-ref、resource-env-ref resource-ref声明资源工厂使用的外部资源 resource-env-ref声明与资源相关的管理对象 */ ref> JNDI JDBC DataSource of JSPBookref-name>jdbc/sample_dbref-name> javax.sql.DataSoruceContainerShareable|Unshareableref> ref> ref-name>jms/StockQueueref-name> ref> /* 15. EJB配置 ejb-ref用于声明一个EJB的主目录的引用 用于声明一个EJB的本地主目录的应用。 */ ref> Example EJB reference ref-name>ejb/Accountref-name> ref-type>Entityref-type> com.mycompany.mypackage.AccountHomecom.mycompany.mypackage.Accountref> ref> Example Loacal EJB reference ref-name>ejb/ProcessOrderref-name> ref-type>Sessionref-type> com.mycompany.mypackage.ProcessOrderHomecom.mycompany.mypackage.ProcessOrderref> /* 16. WEB应用环境参数配置 */ 环境参数说明minExemptions1java.lang.Integer/* 17. 安全配置、资源限制访问配置 在Web应用程序的web.xml中创建security-constraint、login-config和security-role元素 */ /* 配置对指定资源、指定角色的访问权限 */ HelloServlet/HelloServletGETPOSTThis applies only to the "tomcat" security roleadminNONE/* auth-method的方法有: 1) BASIC BASIC是一种常见的Web认证方式,浏览器给用户提示一个对话框,要求输入用户名和密码,随后Tomcat将给出的用户名和密码与tomcat-users.xml中的用户名和密码进行比较,
然后使用前面的security-constraint配置来确定用户是否可访问受保护的servlet 2) FORM 3) CLIENT-CERT 4) DIGEST
*/ 在HTTP验证返回包中的显示名称 BASIC 如果auth-method采用FORM,则这里填写form-login-config名称/* 关于security-role,在前面的servlet已经说明过,这里要强调一下: web.xml中的HTTP认证方法实际上有两个步骤: 1) 检查提供的用户名和密码是否正确。 2) 判断用户是否映射到特定的安全角色。例如,用户可能提供了正确的用户名和密码,但没有映射到特定的安全角色,也将被禁止访问特定的Web资源。 */ admin
soscw.com,搜素材

以上就是web.xml的完整结构,需要注意的是,web.xml中有一些环境参数的加载配置,它们之间存在优先级的关系,我们在编写配置的时候需要注意这一点

web.xml 的加载顺序是:context-param -> listener -> filter -> servlet ,而相同类型节点之间的程序调用的顺序是根据对应的mapping的顺序进行调用的

 

3. JSP基础语法

JSP的本质是Servlet,当用户向指定Servlet发送请求时,Servlet利用输出流动态生成HTML页面,包括每一个静态的HTML标签和所有在HTML页面中出现的内容
JSP页面由如下两部分组成

1. 静态部分: 标准的HTML标签、静态的页面内容,也就是普通的HTML代码
2. 动态部分: 受java程序控制的内容,这些内容由Java程序来动态生成 

soscw.com,搜素材

soscw.com,搜素材
/*
1. JSP的编译指令 
*/
"text/html; charset=GBK" language="java" errorPage="" %>
span>"-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
"http://www.w3.org/1999/xhtml">learn j2ee/*
    2. JSP注释 
    */ 
 
/*
3. JSP声明 
*/
 
/*
4. JSP表达式
*/
/*
5. JSP脚本
*/ 
/*
6. JSP的动作指令
*/ 
/*
7. JSP脚本中的内置对象
*/

soscw.com,搜素材

0x1: JSP的编译指令

soscw.com,搜素材
JSP的编译指令是通过JSP引擎的消息,它不直接生成输出。编译指令都有默认值,我们并不需要为每个指令设置值。它的格式如下
"属性值"...%>(不同属性名之间用空格分开)
    1) page: Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令
        1.1) buffer: 指定缓冲区的大小。缓冲区是JSP内部对象"out",它用于缓存JSP页面对客户端浏览器的输出,默认值为8KB,可以设置为none,也可以设置为其他的值,单位为Kb
        1.2) autoFlush: 当缓冲区即将满而溢出时,是否需要强制输出缓冲区的内容:
            1.2.1) 如果设置为true则正常输出
            1.2.2) 如果设置为false,则会在buffer溢出时产生一个异常
        1.3) contentType: 用于设定生成网页的文件格式(MIME类型)、和编码字符集(页面字符集类型)(text/html;charSet=ISO-8859-1)
            1.3.1) 默认的MIME类型是text/html
            1.3.2) 默认的字符集类型为ISO-8859-1
        1.4) errorPage: 指定错误处理页面,如果本页面产生了异常或错误,而该JSP页面没有对应的错误处理代码(没有用try、catch机制捕捉异常),则会自动调用该属性所指定的JSP
页面。值得注意的是,为页面指定错误发生时的错误提示页面是一种安全的做法,能够在一定程度上组织error-based-sql-injection的攻击 1.5) isErrorPage: 指定当前页面是否可以作为另一个JSP页面的错误处理页面 1.6) extends: JSP程序编译时所产生的Java类,需要继承的父类,或者需要实现的接口的全限定类名(即包含包名在内的完整路径) 1.7) import: 用来导入包。默认自动导入的包(参数之间用逗号分隔)(java.lang.*,javax.servlet.*) 1.7.1) java.lang.* 1.7.2) javax.servlet.* 1.7.3) javax.servlet.jsp.* 1.7.4) javax.servlet.http.* 1.8) info: 定义JSP页面的描述信息 1.9) isThreadSafe: 指定对JSP页面的访问是否为线程安全 1.10) language: 定义JSP页面所用的脚本语言,默认是Java 1.11) session: 指定JSP页面是否使用session 1.12) isELIgnored: 指定是否执行EL表达式 1.13) isScriptingEnabled: 确定脚本元素能否被使用 2) include: 用于指定包含另一个页面 "file.jsp"%> 可以将外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句(如果有的话),也就是说,它既可以包含静态的文本,也可以包含动态的JSP页面。包含页面在编译时将完全包含了被包
含页面的代码,融合成一个页面。作用和PHP中的inlcude、require类似。 需要注意的是,要指出的是,静态包含还会将被包含页面的编译指令也包含进来,如果两个页面的编译指令冲突,那么页面就会出错(即被包含的页面中不能重复定义
page、include、taglib)
3) taglib: 用于定义和访问自定义标签 自定义标签库是一种非常优秀的表现层组件技术。通过使用自定义标签库,可以在简单的标签中封装复杂的功能,在JSP2中使用自定义标签需要以下步骤 1) 开发自定义标签处理类 在JSP页面使用一个标签时,底层实际上由标签处理类提供支持,从而可以通过简单的标签来封装复杂的功能,从而使团队更好地协作开发。自定义标签类应该继承一个父类:
javax.servlet.jsp.tagext.SimpleTagSupport,除此之外,JSP自定义标签类还有如下要求(通过接口来强制性保证):
1) 如果标签包含属性,每个属性都有对应的getter、setter方法 2) 重写doTag()方法,这个


评论


亲,登录后才可以留言!