servlet+过滤器+监视器
目录
说明
servlet+过滤器+监视器
配置文件web.xml
,代码片
.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>Servlet</display-name>
<!-- servlet -->
<servlet>
<servlet-name>aaa</servlet-name>
<servlet-class>com.aaa</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>aaa</servlet-name>
<!-- 访问路径 -->
<url-pattern>/com/aaa</url-pattern>
</servlet-mapping>
<!-- 过滤器 -->
<filter>
<filter-name>bbb</filter-name>
<filter-class>com.bbb</filter-class>
</filter>
<filter-mapping>
<filter-name>bbb</filter-name>
<servlet-name>com.aaa</servlet-name>
<url-pattern>/log.jsp,/below.jsp</url-pattern>
<!-- 过滤类型,重定向 -->
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<!-- 监视器 -->
<listener>
<listener-class>com.ccc</listener-class>
</listener>
<!-- 无反应时,session销毁时间:1分钟后 -->
<session-config>
<session-timeout>1</session-timeout>
</session-config>
</web-app>
注解方式的servlet aaa
继承HttpServlet,代码片
.
package com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet(
name = "aaa", //Servlet名
urlPatterns = { "/com/aaa" }, //请求路径
initParams = { //常量
@WebInitParam(name = "aaa", value = "123"),
@WebInitParam(name = "bbb", value = "456") })
public class aaa extends HttpServlet {
private static final long serialVersionUID = 1L;
String aaa;
String bbb;
// 初始化方法
@Override
public void init(ServletConfig config) throws ServletException {
this.aaa = config.getInitParameter("aaa");
this.bbb = config.getInitParameter("aaa");
super.init(config);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("xxxx");
HttpSession session = request.getSession();
//获取复选框的值
String[] strings=request.getParameterValues("Check_box");
System.out.println("aaa=" + aaa + ";bbb=" + bbb);
System.out.println(request.getRequestURL());// 输出请求的url
//转发
request.getRequestDispatcher("hello.jsp").forward(request, response);
//重定向
response.sendRedirect("hello.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
// 销毁方法
@Override
public void destroy() {
super.destroy();
}
}
注解方式过滤器bbb
实现接口Filter ,代码片
.
package com;
import java.io.IOException;
import javax.servlet.DispatcherType;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
@WebFilter(filterName = "bbb", // 拦截器名
urlPatterns = { "/log.jsp", "/below.jsp" }, // 拦截的客户端请求
servletNames = { "aaa" }, // 拦截的servlet名
dispatcherTypes = { DispatcherType.REQUEST }// 拦截的类型,重定向
)
public class bbb implements Filter {
//初始化方法
public void init(FilterConfig fConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("这是过滤器" + ((HttpServletRequest) request).getRequestURI());
chain.doFilter(request, response);//执行请求
}
//销毁方法
public void destroy() {
}
}
说明:
提醒:
注解方式监视器ccc
实现xxxxListener接口,有三组7个,代码片
.
package com;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
//监视器-监视session的属性的创建,销毁,修改
@WebListener
public class ccc implements HttpSessionAttributeListener {
public ccc() {
}
public void attributeAdded(HttpSessionBindingEvent arg0) {
System.out.println("这是session监视器,在session中添加了新的属性了");
}
public void attributeRemoved(HttpSessionBindingEvent arg0) {
System.out.println("这是session监视器,在session中删除了属性了");
}
public void attributeReplaced(HttpSessionBindingEvent arg0) {
System.out.println("这是session监视器,在session中修改了属性了");
}
}
创建,删除,修改属性
代码片
.
<%
//创建属性
request.setAttribute("ccc", "123");
//删除属性
request.removeAttribute("ccc");
//修改属性
request.setAttribute("ccc", "456");
%>
总结
1. 有注解和配置两种方式
2. 操作8大内置对象
**引用包是最大的困难(一步一步来)**