1.serlvet简介
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
2.get与post方法
GET 方法是默认的从浏览器向 Web 服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中
POST 方法不是把信息作为 URL 中 ?字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息
3.Servlet 处理表单数据
- getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值。
- getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。
- getParameterNames():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法。
4.servlet过滤器
web.xml中过滤器的映射
<filter> <filter-name>helloFilter</filter-name> <filter-class>filter.Loginfilter</filter-class> </filter> <filter-mapping> <filter-name>helloFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
<filter>
指定一个过滤器。
<filter-name>
用于为过滤器指定一个名字,该元素的内容不能为空。<filter-class>
元素用于指定过滤器的完整的限定类名。<init-param>
元素用于为过滤器指定初始化参数,它的子元素<param-name>
指定参数的名字,<param-value>
指定参数的值。
<filter-mapping>
元素用于设置一个 Filter 所负责拦截的资源。一个Filter拦截的资源可通过两种方式来指定:Servlet 名称和资源访问的请求路径
<filter-name>
子元素用于设置filter的注册名称。该值必须是在<filter>
元素中声明过的过滤器的名字<url-pattern>
设置 filter 所拦截的请求路径(过滤器关联的URL样式)
配置是拦截了所有的jap界面,但是login.jsp要放行所以在过滤器界面中进行处理
HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; HttpSession session = request.getSession(); String username= (String) session.getAttribute("username"); // 获得用户请求的URI String path = request.getRequestURI(); // 登陆页面无需过滤 if(path.indexOf("login.jsp") > -1) { chain.doFilter(request, response); return ; } if(username==null) { response.sendRedirect(request.getContextPath()+"/login.jsp"); } else { chain.doFilter(req, resp); }
public void doFilter (ServletRequest, ServletResponse, FilterChain)
该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain用户访问后续过滤器。
5.cookie
Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息
设置cookie的步骤
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
1.创建cookie对象
Cookie cookie=new Cookie("key","value");
2.设置最大生存周期(秒为单位)
cookie.setMaxAge(60*60*24);
3.发送cookie打牌response响应头
response.addCookie(cookie);
4.读取cookie
Cookie cookie=null; Cookie[] cookies=null; cookies=request.getCookies(); for(int i=0;i<cookies.length;i++){ cookie=cookies[i]; }
5.删除cookie
设置生命周期为0
cookie.setMaxAge(0);
6.session
HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录。
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
删除session:public void removeAttribute(String name)