Servlet&JSP的一些浅显的总结
来源:互联网 发布:io域名怎么注册 编辑:程序博客网 时间:2024/06/03 02:25
ServletJSP注解Annotationjsp基础,Servlet&Filter&Listener,伪静态自定义标签文件上传与下载配置jsp属性动态注册,web模块支持表达式语言EL异步处理标签文件
Servlet:
1.配置注解Annotation:
@WebServlet: asyncSupported=true, urlPatterns:{},name,loadOnStartup=1,initParams:{@WebInitParam(name="",value="")}
@WebInitParam
@WebListener用于配置Listener
@WebFilter:asyncSupported,dispatcherTypes=[ASYNC|ERROR|FORWARD|INCLUDE|REQUEST],filterName,initParams,servletNames,urlPatterns/value
@MultipartConfig用于配置文件上传Servlet
JAAS安全控制配置:
@ServletSecurity
@HttpConstraint
@HttpMethodConstraint
2.Servlet:
Servlet一般用作控制器。
load-on-startup Servlet:
<load-on-startup>1</load-on-startup>
@WebServlet(loadOnStartup=1)
相关类HttpServlet,HttpSession,ServletContext,HttpServletRequest,HttpServletResponse,Cookie,ServletConfig.以及
相关的Listener监听器@WebListener
<servlet-param>,
<context-param>
<error-page><error-code>/<exception-type> <location>
<welcome-file-list>
3.Filter过滤器
@WebFilter
Filter不仅会过滤用户请求而且在Servlet或者javabean处理完成之后还会拦截过滤响应。
Filter用途常见分类:用户授权,日志,解码,拦截改变请求响应,图片等防盗链,设置字符编码等
相关类:Filter接口,FilterConfig,FilterChain,HttpServletRequestWrapper,HttpServletResponseWrapper
4.伪静态:
使用URLRewriteFilter开源库
5.文件上传与下载:
@MultipartConfig
相关类:HttpServletRequest,Part,java.util.UUID(用于产生随机ID)
表单属性:enctype="multipart/form-data"
处理时注意事项:
1.查看是否有Content-Type头,若有则存在文件域
2.查看文件名是否为空。
3.调用Part实例的write方法写入磁盘。
4.part实例getName方法返回的不是文件名,若想获取文件名需要通过part.getHeader("Content-Disposition")然后解析这个头来获取。
5.多个文件上传需要遍历Part集合。
或者使用apache commons-fileupload组件
文件下载:
1.设置Content-Type头值为application/x-msdownload或者application/octet-stream
2.添加Content-Disposition头值为attachment;filename=".. ."
3.防止跨站引用:检测refer头。
6.动态注册:
相关类:ServletContext,Servlet,Filter,Listener
通过ServletContext相关方法可动态注册Servlet,Filter,Listener并传递初始化参数。
7.Web模块支持:
一个JAR文件,META-INF目录下添加一个web-fragment.xml.描述和管理该模块的web部署。
8.Servlet或Filter的异步处理。
配置annotation或者web.xml支持async. @WebServlet(ayncSupported=true)
相关类:AsyncContext,AsyncListner,HttpServletRequest
通过request可以获取AsyncContext对象实例。然后通过AsyncContext对象的相关方法可以进行异步请求处理。通过AsyncListener实例可以进行监听相关事件。
编写步骤:
1.request.startAsync()获取AsyncContext实例
2.调用AsyncContext的setTimeout设置超时,ms为单位
可选调用addListener添加监听器。
3.调用AsyncContext实例的start(Runnable run)方法开始异步任务。
4.任务完成时在runnable中调用以下方法之一:asyncContext.complete();asyncContext.dispatch(...)
9.异常:
IOException,ServletException
JSP:
1.JSP注释:<%-- --%>; <!-- -->
JSP声明:<%! %>
JSP表达式<%= %>
JSP脚本<% %>
JSP编译指令:page , include, taglib
JSP动作指令:jsp:forward, jsp:param, jsp:include, jsp:useBean, jsp:setProperty, jsp:getProperty, jsp:plugin
2.jsp内置的对象:
pageContext,page, out,request,response,session,config,exception,application
指定错误页面error-page
<%@ page %>
3.自定义标签。
组成:标签处理类与*.tld文件。
相关类:SimpleTagSupport
开源标签库:apache JSTL taglibs.
maven使用apache JSTL:http://51zzcy.com/maven%e4%bd%bf%e7%94%a8jstl.html
JSTL标签库总结:http://51zzcy.com/jstl%e6%a0%87%e7%ad%be%e5%ba%93%e6%80%bb%e7%bb%93.html
<tag><name></><tag-class></><body-content>empty|scriptless|dynamic-attributes</><atrribute><name></><required></><fragment>true</></></>
重点:
带属性的标签:标签处理类设置private属性并设置setter与getter方法,配置tld文件中tag下的attribute标签。
带标签体的标签:标签处理类需要通过getJspBody().invoke(null)获取标签体,并进行tld中的相应配置(body-content)。
作为jspfragment的标签属性:通过标签处理类获取JspFragment对象(通过设置setFragment(JspFragment fragment))并调用其invoke方法获取引用
片段。使用<jsp:attribute name="">body</>。
动态属性的标签:标签处理类实现DynamicAttributes接口并配置tld文件中<dynamic-attributes>true</dynamic-attributes>
<%@ taglib uri="" prefix="" %>
4.web.xml配置JSP属性
<jsp-config><jsp-property-group><url-pattern></><el-ignore></><page-encoding></><scripting-invalid></><include-prelude></>
<include-coda></></></>
及其他配置元素
5.表达式语言EL:
用于JSP中简化数据的访问。
${expr}
支持逻辑和算术运算。
表达式内置对象:pageContext,pageScope,requestScope,sessionScope,applicationScope,
param,paramValues,header,headerValues,initParam,cookie
自定义函数:
1.定义一个普通java对象,并确保其中的方法为静态方法以便能够在EL中调用。
2.使用标签库tld文件定义函数<function>标签
3.在JSP中引入该tld库。
4.在EL中直接使用定义的函数。<function><name></name><function-class></function-class><function-signature></function-signature>
6.标签文件支持。
<%@ tag %>
简化对标签库的开发。tag file类似于JSP文件。可以使用全部的jsp功能除了page指令。
1.建立tag文件,命名规则:标签名.tag
2.预编译指令:tag,taglib,include,attribute(定义标签属性),variable(定义标签变量可传递给JSP页面使用)
3.存放位置WEB-INF/tags下
4.在JSP中引入<%@ taglib prefix="prefix" tagdir="/WEB-INF/tags" %>
5.内置对象:
request,response,session,application,config,out
6.引用标签体:<jsp:doBody>,<jsp:invoke fragment="123">结合<%@attribute name="123" fragment="true">
其他的:
配置JAAS,配置JNDI数据源
常见问题总结:
你也可以参考本人博文小站
- Servlet&JSP的一些浅显的总结
- 自学jsp+servlet+ajax的一些知识的总结
- SVN的一些浅显看法
- Servlet的一些总结
- jsp&servlet的一些知识点
- JSP的一些总结
- 对Ajax的一些浅显理解
- 关于线程的一些浅显知识
- 关于UnityEngine.Network的一些浅显认知
- Fortify SCA的一些浅显使用
- python中self的一些浅显认识
- JSP的Servlet的一些小问题
- 关于servlet的一些总结
- 11.11 JSP/Servlet开发的一些建议
- jsp与servlet的一些知识
- jsp中servlet的一些注意事项
- 【JSP开发】Servlet的一些细节
- 自学jsp,servlet遇到的一些问题
- grub操作之grub-shell启动iso,及grub修复,亮度无法调节解决
- debian/ubuntu server学习整理系列之一:基本日常使用与软件包管理
- 百度百科的快照怎么更新呢
- ubuntu网络配置初步/etc/network
- 类和对象(一)
- Servlet&JSP的一些浅显的总结
- jquery 中$("form :input") $("form input") 区别
- 解决JAVA,properties loadFromXML读取中文XML乱码的方法
- Linux下的多线程编程
- jQuery选择器总结
- PAT 1069. The Black Hole of Numbers (stringstream)
- 学海之无涯,而吾生之有涯
- INT Imm
- atoi