- 编译运行简单servlet可以参考我前面的一篇文章
- 每次修改了web.xml文件以后都要重新启动服务器
- 每个servlet实际上都可以配置多个名称,只需要增加对应的servlet-mapping元素即可,还可以使用通配
- 如果遇到404这种错误就注意一下地址栏是不是自己要去的地址,有时候需要在前面添加request.getContextPath()
- servlet程序生命周期主要由加载程序、初始化init、服务service(一般不直接覆写此方法,而是使用doget或者dopost方法)、销毁destory、卸载五部分组成。
- 客户端跳转resp.sendRedirect("xxx");服务端跳转req.getRequestDispatcher("xxx").forward(req,resp);
- Filter过滤器主要用于限制用户访问某些资源或者在请求时提前处理某些资源,采用链的方式进行处理,该接口主要有三个方法init初始化、doFilter完成具体的过滤操作以后通过FilterChain让请求继续向下传递、destroy销毁时使用。
- Filter主要应用有编码过滤、登录验证、事务处理等等,均实现Filter接口。
- 过滤器配置web.xml文件,比如
<filter> <filter-name>encode</filter-name> <filter-class>lpzz.util.ui.filter.EncodeFilter</filter-class> <init-param> <param-name>ec</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encode</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
- Listener监听器负责监听web的各种操作,当相关事件触发后将产生事件,并对事件进行处理。
- 对application监听,通过ServletContextListener接口实现上下文状态监听,通过ServletContextAttributeListener接口实现上下文属性监听。对session监听,通过HttpSessionListener接口实现session状态监听,通过HttpSessionAttributeListener接口对Session属性监听,而使用HttpSessionBindingListener接口对Session状态监听可以不用配置直接使用。对request监听,通过ServletRequestListener接口实现状态监听,通过ServletRequestAttributeListener接口实现request属性监听。
- 监听器配置web.xml文件,比如
<listener> <listener-class>xxxxx.xxx.xxx.xxx</listener-class> </listener>
- Listener监听器可以应用于在线人员统计等等
- 表达式语言语法${属性名称},一般查找顺序为page、request、session、application,如果要指定取出属性的范围,可以使用例如:${sessionScope.名称},接收请求参数${param.参数名称},接收一组参数${paramValues.参数名称},集合操作可以使用${arr[0]}、${map["keyname"]},还可以操作对象,例如:${voobject.属性名称}
- 表达式语言还可以使用运算符操作。
- 自定义标签编程一般要么继承TagSupport要么继承BodyTagSupport,较为简单方便的是继承SimpleTag类,直接重写doTag方法就可以。写完以后添加一个xxx.tld文件进行标签描述,例如以下:【使用时则需在前面加<%@ taglib prefix="firstdemo" uri="xxx"】
<tlib-version>1.0</tlib-version><!-- 标签库版本 --> <short-name>firstdemo</short-name><!-- 标签库在TLD中的描述名称 --> <tag> <name>date</name><!-- 标签在jsp中使用的名称 --> <tag-class>book.DataTag</tag-class><!-- 指向的类文件 --> <body-content>empty</body-content><!-- 标签体内容为空 --> <attribute> <name>format</name> <required>true</required><!-- 表示该属性必须设置,否则可选 --> <rtexprvalue>true</rtexprvalue><!-- 允许在表达式请求 --> </attribute> </tag>
/*在web.xml中配置简化uri中地址的写法*/ <jsp-config> <taglib> <taglib-uri>firstTag</taglib-uri> <taglib-location>/WEB-INF/firstTag.tld</taglib-location> </taglib> </jsp-config>
- 标准标签库的使用可以参考其他资料,菜鸟教程可以了解一下。
- servlet程序都需要在web.xml里面配置,配置顺序一般是过滤器,监听器,最后再配置简单servlet。
- servlet、表达式语言、标签编程等都提升了mvc模式的使用,对MVC进一步了解可以看一下我放在github上面的一个小项目,全部都是jsp最基础写的,希望对理解有所帮助。https://github.com/LuoPiaoZZ/VoteSystem/tree/master/VoteSystem。我第一次上传项目,可能会有点问题,如有问题请评论指正。