首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Servlet资料辅导(4)

Servlet资料辅导(4)

作者头像
紫风
发布2025-10-14 16:00:46
发布2025-10-14 16:00:46
850
举报

Servlet的url-pattern

url-pattern可以使用以下三种方式 1,确切路径匹配,也就是给出确定的路径 xxx/xxxx 2,模糊路径匹配,也就是指给出一部分路径,xxxx/*,他会匹配确定路径,也就是xxxx/a 或者是xxxx/b都是可以匹配的 3,扩展名匹配,也就是会匹配扩展名,只要是扩展名相同就匹配,xxx.xxx *.xx

注意:扩展名匹配和确切路径匹配不能放在一起使用,也就是不能写成 xxxx/xxxx/xxx.xx,但是可以用 *.xxx。

ServletRequest对象的三个返回路径的方法 getContextPath()获得应用的路径,用动态获取应用路径 getServletPath()获得Servlet路径,也就是form中的action,如果使用确切路径那么就会是这个Servlet配置的url-pattern。 getPathInfo()使用模糊路径匹配时会返回匹配模糊部分。

注意:在html的form表单的action中,如果使用了扩展名匹配,一定要写明/xxxxx/xxx.xx,不要写成/xxxx/*.xx,在form的action中要尽量使用绝对路径,也就是要用 应用名/xxx.xx或者应用名/xxx。

SingleThreadModel接口

1) 如果希望禁止多线程访问,可以让Servlet使用SingleThreadModel接口:       public class YourServlet extends HttpServlet implements SingleThreadModel{       ...       }2) 使用此接口,系统将保证不会存在多个请求线程同时访问Servlet的单个实例。但是仍然需要同步对存储在Servlet外部的类变量或共享字段的访问。3) 如Servlet频繁被访问,则Servlet访问的同步将严重影响性能(延时)。

ServletRequest对象的生命周期就是在service()方法中,除了forward(...,...)方法将这个请求对象转发给其他的Servlet。

Session(会话)和Cookie

Session对象用来解决客户端发送多个请求时来用户请求信息的存储问题,但是他和ServletRequest对象是不同的,他会在有需要时创建,但是他的生命周期会比请求对象要长。Session对象的生命周期也是有限制的,如果长时间的没有访问,就会销毁掉Session对象,可以通过Session对象的

setAttribute(String name, Object o) 和getAttribute(String name)来存取数据信息。Session是用户级的对象。

public void service(ServletRequest request,ServletResponse response){

 String user = request.getParameter("user");         String pass = request.getParameter("pass");  HttpSession session = request.getSession(true);//使用请求对象来创建Session         session.setAttribute("username", user);         session.setAttribute("passwd", pass); }

getSession(true)就表示如果Session不存在就创建一个新的Session,并把Session的标识SessionID写到Cookie中,如果存在就是用这个Session。getSession(false)就是在Session不存在时不会创建新Session而是返回null。如果使用getSession()方法,就等同于getSession(true)。

注意:ServletRequest对象适用于传输大量的数据,因为其生命周期比较短,可以有效的节省内存资源。 大数据量的传输或保存不适合使用Session空间。

Cookie,是记录用户的Session信息,也可以记录用户的请求信息,也就是SessionID,来分辨哪一个用户是否登陆过。在每次登陆时,还会将Cookie发送回服务器端,Cookie是用来跟踪Session的。

public void service(ServletRequest request,ServletResponse response){

 String user = request.getParameter("user");         String pass = request.getParameter("pass");         Cookie userCookie = new Cookie("user", user);         userCookie.setMaxAge(60 * 60 * 24 * 365);//设置Cookie的最大有效期,秒为单位         Cookie passCookie = new Cookie("pass", pass);         passCookie.setMaxAge(60 * 60 * 24 * 365);         response.addCookie(userCookie);         response.addCookie(passCookie);

}

HttpServletResponse类 HttpServletResponse是用来回应用户的操作的,它可以实现页面的重定向。

sendRedirect(String location),是用这个方法指定要访问的servlet,其参数是Servlet的url-pattern

如果使用了重定向,就不会保留原有的request对象。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2008-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档