用来判断当前的Session是否合法,该逻辑在实际应用中可重载,非必须。
配置示例代码:
<filter> <filter-name>SessionVerifyFilter</filter-name> <filter-class>com.ailk.web.servlet.SessionVerifyFilter</filter-class> <init-param> <param-name>page-login</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>page-error</param-name> <param-value>Exception</param-value> </init-param> </filter> <filter-mapping> <filter-name>SessionVerifyFilter</filter-name> <servlet-name>demo</servlet-name> </filter-mapping>
如果开启Gzip功能,则必须配置该Filter,否则页面无法加载样式、JS脚本等。
配置示例代码:
<filter> <filter-name>GzipFilter</filter-name> <filter-class>com.ailk.web.servlet.gzip.GzipFilter</filter-class> <init-param> <param-name>max-age</param-name> <param-value></param-value> </init-param> </filter> <filter-mapping> <filter-name>GzipFilter</filter-name> <url-pattern>*.gzjs</url-pattern> </filter-mapping> <filter-mapping> <filter-name>GzipFilter</filter-name> <url-pattern>*.gzcss</url-pattern> </filter-mapping>
如果需要ETag功能,则添加该配置,非必须。
配置示例代码:
<filter> <filter-name>ETagFilter</filter-name> <filter-class>com.ailk.web.servlet.etag.ETagFilter</filter-class> </filter> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.png</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.jpg</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.gif</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.css</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.js</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.gzcss</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.gzjs</url-pattern> </filter-mapping>
如果需要使用 web 安全控制的功能,则添加如下配置。
其中 page-login 对应的是自定义的登录页面的 name
page-error 对应的是自定义的异常控制页面的 name
若未自定义 page-login 和 page-error 则可使用示例中的配置
配置示例代码:
<filter> <filter-name>WebSecurityFilter</filter-name> <filter-class>com.ailk.web.servlet.WebSecurityFilter</filter-class> <init-param> <param-name>page-error</param-name> <param-value>Exception</param-value> </init-param> </filter> <filter-mapping> <filter-name>WebSecurityFilter</filter-name> <servlet-name>demo</servlet-name> </filter-mapping>
若有WEB页面,则必须配置,该servlet-name必须存在与之同名的.application文件。
配置示例代码:
<servlet> <servlet-name>demo</servlet-name> <servlet-class>com.ailk.web.servlet.PageServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>demo</servlet-name> <url-pattern>/demo</url-pattern> </servlet-mapping>
根据文件的操作可以定制IFileAction,当FileAction加载失败时使用默认的DefaultFileAction
IFileAction接口说明:
com.ailk.web.view.servlet.file.IFileAction /** * 查询显示已上传的文件列表 * 返回的数据结构必须是{fileId:{fileId:xx,fileName:xx,fileSize:xx,fileType:xx}},否则解析失败 * @param config 初始化FileServlet参数 * @param params 前台传入所有参数 * @param fileIds 文件列表 以,分隔 * @param ftpSite FTP站点 * @return */ public IDataBus query(Map<String, String> config,Map<String,String[]> params, String fileIds,String ftpSite); /** * 文件删除,成功返回0 * @param config 初始化FileServlet参数 * @param params 前台传入所有参数 * @param fileId 文件id * @param ftpSite FTP站点 * @throws Exception */ public int delete(Map<String, String> config,Map<String,String[]> params, String fileId,String ftpSite) ; /** * 文件上传,成功返回fileId,失败返回小于0的整形字符串 * @param config 初始化FileServlet参数 * @param file 上传文件信息 * @param params 前台传入所有参数 * @param ftpSite FTP站点 * @throws Exception */ public String upload(Map<String, String> config, FileItem file,Map<String,String[]> params,String ftpSite) throws IOException; /** * 文件下载,成功返回0 * @param config 初始化FileServlet参数 * @param response HttpServletResponse * @param fileId 文件id * @param real_name 文件重命名 * @param ftpSite FTP站点 * @param params 前台传入所有参数 * @throws Exception */ public int download(Map<String, String> config,HttpServletResponse response, String fileId,String real_name,String ftpSite,Map<String,String[]> params) ; /** * 查看文件,成功返回0 * @param config 初始化FileServlet参数 * @param params 前台传入所有参数 * @param fileId 文件id * @param ftpSite FTP站点 */ public int show(Map<String, String> config,Map<String,String[]> params, String fileId,String ftpSite); /** * 操作合法性验证,包括访问的权限,访问的文件目录等 * @param config 初始化FileServlet参数 * @param params 前台传入所有参数 * @param fileId 文件id * @param ftpSite FTP站点 * @return * @throws Exception */ public boolean isValidate(Map<String, String> config,Map<String,String[]> params, String fileId,String ftpSite) ; /** * 限制上传文件的最大值,默认是FILE_MAX_SIZE(30M) * @return */ public int getMaxSize(); /** * 获取单个文件存在内存中的阀值大小,默认是FILE_THRESHOLD_SIZE(300kb) * @return */ public int getThresholdSize(); /** * 获取文件临时存放的磁盘目录,默认是System.getProperty("java.io.tmpdir"); * @return */ public String getTempRepository(); /** * 获取upload,download,delete,show的返回值获取返回结果 * @param actionCode * @return */ public String getActionInfo(int actionCode); /** * 生成文件id * @param config 初始化FileServlet参数 * @param params 前台传入所有参数 * @param fileItem 上传文件信息 * @return */ public String makeFileId(Map<String, String> config,Map<String,String[]> params,FileItem fileItem); /** * 文件上传后执行 * @param config 初始化FileServlet参数 * @param params 前台传入所有参数 * @param fileItem 上传文件信息 * @return */ public void afterUpload(Map<String, String> config,Map<String,String[]> params,FileItem fileItem);
配置示例代码:
<servlet>
<servlet-name>attach</servlet-name>
<servlet-class>com.ailk.web.servlet.file.FileServlet</servlet-class>
<!-- file action -->
<init-param>
<param-name>action</param-name>
<param-value>com.ailk.web.servlet.file.DefaultFileAction</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>attach</servlet-name>
<url-pattern>/attach</url-pattern>
</servlet-mapping>
配置示例代码:
<servlet> <servlet-name>image</servlet-name> <servlet-class>com.ailk.web.servlet.file.ImageServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>image</servlet-name> <url-pattern>/image</url-pattern> </servlet-mapping>
配置示例代码:
<session-config> <session-timeout>30</session-timeout> </session-config>
若有WEB页面访问,一般配置成页面访问Servlet的访问路径。
配置示例代码:
<welcome-file-list> <welcome-file>demo</welcome-file> </welcome-file-list>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <filter> <filter-name>SessionVerifyFilter</filter-name> <filter-class>com.ailk.web.servlet.SessionVerifyFilter</filter-class> <init-param> <param-name>page-login</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>page-error</param-name> <param-value>Exception</param-value> </init-param> </filter> <filter> <filter-name>GzipFilter</filter-name> <filter-class>com.ailk.web.servlet.gzip.GzipFilter</filter-class> <init-param> <param-name>max-age</param-name> <param-value></param-value> </init-param> </filter> <filter> <filter-name>ETagFilter</filter-name> <filter-class>com.ailk.web.servlet.etag.ETagFilter</filter-class> </filter> <filter-mapping> <filter-name>SessionVerifyFilter</filter-name> <servlet-name>demo</servlet-name> </filter-mapping> <filter-mapping> <filter-name>GzipFilter</filter-name> <url-pattern>*.gzjs</url-pattern> </filter-mapping> <filter-mapping> <filter-name>GzipFilter</filter-name> <url-pattern>*.gzcss</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.png</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.jpg</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.gif</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.css</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.js</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.gzcss</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ETagFilter</filter-name> <url-pattern>*.gzjs</url-pattern> </filter-mapping> <servlet> <servlet-name>demo</servlet-name> <servlet-class>com.ailk.web.servlet.PageServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet> <servlet-name>attach</servlet-name> <servlet-class>com.ailk.web.servlet.file.FileServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet> <servlet-name>image</servlet-name> <servlet-class>com.ailk.web.servlet.file.ImageServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>demo</servlet-name> <url-pattern>/demo</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>attach</servlet-name> <url-pattern>/attach</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>image</servlet-name> <url-pattern>/image</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>demo</welcome-file> </welcome-file-list> </web-app>