昨天做了个用dom4j操作xml,因为背景是要统计访问站点人数;做的时候就有一哥们对我说为什么不用Properties呢?直接用Java的API操作,不需要借助其他jar,想想也是,今天就用Properties试试
首先要有一个概念,properties文件存储的都是键值对,而且键和值都是字符串类型
开始准备:
一、创建一个web工程,在src目录下创建一个properties文件,文件的后缀为.properties
properties文件中只有一对值——usernum=1
编写处理Properties文件的工具类JavaDealProperties
package com.hulang.fun;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class JavaDealProperties {
public int getNum() {
//创建properties对象
Properties properties = new Properties();
//获取文件的绝对路径
String filePath = this.getClass().getResource("/usernum.properties")
.getPath();
String usernum = "";
try {
//创建一个输入流与文件绑定
FileInputStream inStream = new FileInputStream(filePath);
//加载流(加载文件)
properties.load(inStream);
//通过键获取值
usernum = properties.getProperty("usernum");
//关闭资源
inStream.close();
} catch (IOException e) {
}
return Integer.parseInt(usernum);
}
public void setNum(int userNum) {
Properties properties = new Properties();
String filePath = this.getClass().getResource("/usernum.properties")
.getPath();
try {
FileOutputStream oFile = new FileOutputStream(filePath);
properties.setProperty("usernum", userNum + "");
properties.store(oFile, filePath);
oFile.flush();
oFile.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
如果有对路径不太清楚的人可以参考上一篇博客
在处理xml时也涉及到路径处理
三、显示视图(index.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>java操作properties文件</title>
</head>
<body>
<br>
访问人数
<%=session.getAttribute("usernum") %>
</body>
</html>
四、Servlet
package com.hulang.fun;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class GetUserNumServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
JavaDealProperties javaDealProperties = new JavaDealProperties();
int usernum = javaDealProperties.getNum();
request.getSession().setAttribute("usernum", usernum);
System.out.println(usernum+" usernum");
javaDealProperties.setNum((usernum+1));
request.getRequestDispatcher("/index1.jsp").forward(request, response);
}
}
这个Servlet和xml处理时的是一样一样的
Servlet在web.xml中的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>GetUserNumServlet</servlet-name>
<servlet-class>com.hulang.fun.GetUserNumServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GetUserNumServlet</servlet-name>
<url-pattern>/index.jsp</url-pattern>
</servlet-mapping>
</web-app>
五、效果图:
查看服务器端的properties文件(是服务器端的不是项目里面的)
结果符合预期
有疑问请到群:511906138 找我