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_4_0.xsd"
id="WebApp_ID" version="4.0">
<!-- xml=可扩展的标记语言 -->
<!-- ns=namespace命名空间 -->
<!-- xsd=xml schema definition文档结构描述 -->
<!-- <servlet> -->
<!-- <servlet-name>Test1Servlet</servlet-name> -->
<!-- <servlet-class>test211230.Test1Servlet</servlet-class> -->
<!-- </servlet> -->
<!-- <servlet-mapping> -->
<!-- <servlet-name>Test1Servlet</servlet-name> -->
<!-- <url-pattern>/Test1Servlet</url-pattern> -->
<!-- </servlet-mapping> -->
<!-- load-on-startup标签作用:tomcat启动时执行该servlet的初始化 -->
<!-- 当值为负整数或未指定值时,该servlet是在第一次被调用时加载并初始化 -->
<!-- 当值为0或正整数是,tomcat启动时会加载并初始化,值越小优先级越高 -->
<!-- 一般会设置上,空间换时间,避免用户在使用是加载等待 -->
<servlet>
<servlet-name>Test3Servlet</servlet-name>
<servlet-class>test211230.Test3Servlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>zhangsan</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Test3Servlet</servlet-name>
<url-pattern>/Test3Servlet</url-pattern>
</servlet-mapping>
<filter>
<filter-name>TestFilter</filter-name>
<filter-class>test220105.TestFilter</filter-class>
<init-param>
<param-name>username</param-name>
<param-value>zhangsan</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123123</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/test/test220104/TestUpload.jsp</url-pattern>
<!-- <dispatcher>REQUEST</dispatcher> -->
<!-- 默认值是request -->
<!-- <dispatcher>FORWARD</dispatcher> -->
<!-- <dispatcher>INCLUDE</dispatcher> -->
</filter-mapping>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/Test1Servlet</url-pattern>
</filter-mapping>
<filter>
<filter-name>Test2Filter</filter-name>
<filter-class>test220105.Test2Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>Test2Filter</filter-name>
<url-pattern>/test/test220104/TestUpload.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Test2Filter</filter-name>
<url-pattern>/Test1Servlet</url-pattern>
</filter-mapping>
<listener>
<listener-class>test220105.TestLinstener</listener-class>
</listener>
<display-name>demo211229</display-name>
<welcome-file-list>
<!-- 欢迎页 -->
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
TestUpload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传图片</title>
</head>
<body>
<!-- http://127.0.0.1:8080/demo211229/test/test220104/TestUpload.jsp -->
<form action="/demo211229/UploadServlet" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFile1" /><br>
<input type="file" name="uploadFile2" /><br>
<input type="text" name="coad" /><br>
<input type="submit" value="上传" />
</form>
<% System.out.print("---上传图片---");
request.setAttribute("key", "value1");
request.setAttribute("key", "value2");
request.removeAttribute("key");
%>
el
jstl
</body>
</html>
TestA.java
package test220105;
public class TestA {
}
TestListener.java
package test220105;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class TestLinstener implements ServletRequestAttributeListener {
@Override
public void attributeAdded(ServletRequestAttributeEvent srae) {
srae.getName();
srae.getValue();
System.out.println("添加-------");
System.out.println(srae.getName()+"/t"+srae.getValue());
}
@Override
public void attributeRemoved(ServletRequestAttributeEvent srae) {
System.out.println("删除-------");
System.out.println(srae.getName()+"/t"+srae.getValue());
}
@Override
public void attributeReplaced(ServletRequestAttributeEvent srae) {
System.out.println("修改 -------");
System.out.println(srae.getName()+"/t"+srae.getValue());
}
}