利用Tomcat catalina.policy实现禁止文件读写demo(window版)
来源:互联网 发布:阿里云服务器视频教程 编辑:程序博客网 时间:2024/05/16 23:46
概述:java必用的服务器应该就是tomcat,tomcat涉及内容很多,今天利用catalina.out实现禁止文件读写demo。
1、先决条件
安装好JDK(笔者JDK 1.8)
安装好tomcat(笔者tomcat 7.0)
2、思路
写一个servlet放置到webapps/ROOT目录下, 大家都知道ROOT是tomcat的默认应用。然后网页请求,转发servlet 在ROOT目录写入一个test.txt文件。
这里涉及 catalina.policy
3、开始写servlet代码
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.GenericServlet;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class WriteFileServlet extends GenericServlet{/** * */private static final long serialVersionUID = 4362300269424935465L;@Overridepublic void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {//Try to open a file and write to it
//这里注意换成你tomcat安装根目录String catalinaHome = "D:/install/apache-tomcat-7.0.78-windows-x64/apache-tomcat-7.0.78"; File testFile = new File(catalinaHome+"/webapps/ROOT","test.txt");FileOutputStream fileOutputStream = new FileOutputStream(testFile);fileOutputStream.write(new String("testing..\n").getBytes());fileOutputStream.close();// If we get down this far, the file was created successfullyPrintWriter out = response.getWriter();out.println("File created successfully!");}}
如果写入成功会打印“File created successfully!”
4、在%CATALINA_HOME%/webapps/ROOT/WEB-INF/ 下创建一个classes目录 等会放置编译class文件
5、编译servlet代码
javac -classpath %CATALINA_HOME%/lib/servlet-api.jar -d %CATALINA_HOME%/webapps/ROOT/WEB-INF/classes WriteFileServlet.java
%CATALINA_HOME% 表示引用tomcat根目录
-classpath 表示依赖编译jar包
-d :表示编译文件放置位置
WriteFileServlet.java 表示编译的类 (表示cmd 切换到WriteFileServlet.java目录下)
6、配置web.xml文件%CATALINA_HOME%\webapps\ROOT\WEB-INF\目录下, 就是配置刚才编译的servlet
<servlet><servlet-name>writefile</servlet-name><servlet-class>WriteFileServlet</servlet-class></servlet><servlet-mapping><servlet-name>writefile</servlet-name><url-pattern>/writefile</url-pattern></servlet-mapping>
7、启动Tomcat服务器,这是注意带-security参数(表示安全模式启动,也就是会用到catalina.policy)
manager 和host-manager会报错,不要管它
catalina start -security
8、打开浏览器验证下(注意这里还没有设置catalina.policy,没有设置表示禁止的)
键入如下网址:
http://localhost:8080/writefile
9、修改catalina.policy文件
追加如下内容:
grant codeBase "file:${catalina.home}/webapps/ROOT/-" {permission java.io.FilePermission "${catalina.home}/webapps/ROOT/test.txt","read,write,delete";};
permission java.io.FilePermission :表示FIle IO流权限
"${catalina.home}/webapps/ROOT/test.txt" : 表示操作具体文件
“”read,write,delete" : 文件操作动作是允许的
保存之后,重启tomcat ,注意带-security参数
如果你想要默认就是安全方式启动,也就是去掉-security参数,你可以在catalina.bat文件前面设置JAVA_OPTS参数
set JAVA_OPTS="-Djava.security.manager -Djava.security.policy=%CATALINA_HOME%/conf/catalina.policy" (注意前面设置)
当然tomcat.policy 的规则不止这个,还有很多其他,这只是抛砖引玉。
参考:tomcat权威指南书。
- 利用Tomcat catalina.policy实现禁止文件读写demo(window版)
- 自定义java.policy配置(如何让你的类禁止读写文件?禁止创建Socket对象?)
- 自定义java.policy配置(如何让你的类禁止读写文件?禁止创建Socket对象?)
- /opt/apache-tomcat-7.0.57/conf/catalina.policy(权限不够)
- 禁止tomcat生成catalina.out、localhost_access_log、host-manager.log、localhost.log、manager.log这些文件
- window下tomcat打印catalina.out问题
- 利用文件流实现文件读写
- Tomcat6标准日志,按天输出日志,并禁止catalina.out文件[tomcat中catalina.out日志时间久变得很大]
- 利用读写锁简单实现一个缓存demo
- 利用javacsv实现CSV文件的读写
- 利用javacsv实现CSV文件的读写
- 利用javacsv实现CSV文件的读写
- 利用Javacsv实现Java读写csv文件
- 利用python实现ftp的文件读写
- python文件读写demo
- Java读写文件Demo
- Python读写文件Demo
- tomcat下catalina.out日志文件分割
- javaEE从数据库中取数据的坑2
- 安卓前端+web后端 通信示例 POST (人脸识别)
- [kuangbin带你飞]搜索进阶 G
- Java学习笔记-控制执行流程
- linux下opencv无法正确读取avi视频文件
- 利用Tomcat catalina.policy实现禁止文件读写demo(window版)
- IT男装逼利器:如何像黑客一样聊天 Mojo-Webqq
- Batch Gradient Descent
- HOG算法的matlab实现1.0
- uva1595对称轴 STL模拟
- PAT
- 自定义View
- 专利:专利说明书的主要组成部分
- 合并二叉排序树