cdo

1)@postconstruct和@preconstruct
从java ee5规范开始,servlet增加了两个影响servlet生命周期的注解(annotation):@postconstruct和@preconstruct。这两个注解被用来修饰一个非静态的void()方法.而且这个方法不能有抛出异常声明。
1.1)@postconstruct说明
被@postconstruct修饰的方法会在服务器加载servlet的时候运行,并且只会被服务器调用一次,类似于serclet的inti()方法。被@postconstruct修饰的方法会在构造函数之后,init()方法之前运行。
1.2)@preconstruct说明
被@preconstruct修饰的方法会在服务器卸载servlet的时候运行,并且只会被服务器调用一次,类似于servlet的destroy()方法。被@preconstruct修饰的方法会在destroy()方法之后运行,在servlet被彻底卸载之前。




2)java io的编码问题

2.1)、JAVA读取文件,避免中文乱码。
 /**
  * 读取文件内容
  * @param filePathAndName String 如 c:\\1.txt 绝对路径
  * @return boolean
  */
 public static String readFile(String filePathAndName) {
  String fileContent = "";
  try {  
   File f = new File(filePathAndName);
   if(f.isFile()&&f.exists()){
    InputStreamReader read = new InputStreamReader(new FileInputStream(f),"UTF-8");
    BufferedReader reader=new BufferedReader(read);
    String line;
    while ((line = reader.readLine()) != null) {
     fileContent += line;
    }   
    read.close();
   }
  } catch (Exception e) {
   System.out.println("读取文件内容操作出错");
   e.printStackTrace();
  }
  return fileContent;
 }

2.2)、JAVA写入文件,避免中文乱码。

 public static void writeFile(String filePathAndName, String fileContent) {
  try {
   File f = new File(filePathAndName);
   if (!f.exists()) {
    f.createNewFile();
   }
   OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"UTF-8");
   BufferedWriter writer=new BufferedWriter(write);   
   //PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filePathAndName)));
   //PrintWriter writer = new PrintWriter(new FileWriter(filePathAndName));
   writer.write(fileContent);
   writer.close();
  } catch (Exception e) {
   System.out.println("写文件内容操作出错");
   e.printStackTrace();
  }
 }
/**
* 本文件名为FileWriterSubstituteSample,实际上是在寻找FileWriter的替代者。
* 因为FileWriter在写文件的时候,其编码方式似乎是System.encoding或者System.file.encoding,
* 在中文win下encoding基本是gb2312,在en的win下基本是iso-8859-1,总之不是utf-8。
* 所以要创建一个utf-8的文件,用FileWriter是不行的。
* 目前不知道如何更改其用来写文件的编码方式,因此对于创建utf-8文件使用如下方式来代替。
*
* 参见:
* http://www.malcolmhardie.com/weblogs/angus/2004/10/23/java-filewriter-xml-and-utf-8/
*/
public class FileWriterSubstituteSample {
  public static void main(String[] args) {
    String path="cn/yethyeth/sample/resources/XML_UTF-8.xml";
    try {
      OutputStreamWriter out = new OutputStreamWriter(
new FileOutputStream(path),"UTF-8");
      out.write("<?xml version="1.0" encoding="utf-8"?><a>这是测试。</a>");
      out.flush();
      out.close();
      System.out.println("success...");
    } catch (UnsupportedEncodingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
 } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

3)Tomcat设为window服务
设置Tomcat为window操作系统的服务介绍。针对解压版的tomcat。
步骤:
3.1). 修改tomcat的bin目录下service.bat文件;
设置服务名和服务显示名称:
set SERVICE_NAME=Tomcat8081   ---服务名
set PR_DISPLAYNAME=Apache Tomcat8081   ---服务的显示名称
【十分重要】:如果想设定此Tomcat使用不同版本JDK,那么就需要在service.bat文件开始处设置JAVA_HOME等参数,这样安装为服务的时候默认就用该JDK版本了。
否则,系统会选择系统默认配置的JAVA_HOME来进行安装。
如:
rem ---------------------------------prj use jdk7------------------------------
echo setting JAVA_HOME by Use default jdk7 path C:\Java\jdk1.7.0_25
set "JAVA_HOME=C:\Java\jdk1.7.0_25"
rem ----------------------------------prj use jdk7-----------------------------
if "%OS%" == "Windows_NT" setlocal
…………
3.2). 在cmd命令窗口,进入tomcat的bin目录,执行service.bat install;
如果不指定服务名,系统会默认设置Tomcat的服务,包括名称和显示名称。
名称取决于service.bat中的设置:
set SERVICE_NAME=Tomcat8081   ---服务名
set PR_DISPLAYNAME=Apache Tomcat8081   ---服务的显示名称
3.3). 在系统“管理”--》“服务” 下找到新添加的tomcat服务,设置为自动可在系统启动的时候自动启动。
【注】:端口不可被其它程序占用,否则启动失败。
4)启停操作
4.1)localstart
set logFullName=G:/log/startService

echo 启动服务实例Tomcat7
net start Tomcat7  >>  %logFullName%-node01.txt 2>&1 &

echo 启动服务实例Tomcat8081
echo net start Tomcat8081  >>  %logFullName%-node02.txt 2>&1 &

echo 启动日志:%logFullName%

pause
4.2)localstop
set logFullName=G:/log/stopService

echo 停止服务实例Tomcat7
net stop Tomcat7  >>  %logFullName%-T7.txt 2>&1 &

echo 停止服务实例Tomcat8081
echo net stop Tomcat8081  >>  %logFullName%-T8.txt 2>&1 &

echo 停止日志:%logFullName%

pause
4.3)prdstart

for /f "tokens=1 delims=/ " %%j in ("%date%") do set d1=%%j
for /f "tokens=2 delims=/ " %%j in ("%date%") do set d2=%%j
for /f "tokens=3 delims=/ " %%j in ("%date%") do set d3=%%j
for /f "tokens=1 delims=: " %%j in ("%time%") do set t1=%%j
for /f "tokens=2 delims=: " %%j in ("%time%") do set t2=%%j
for /f "tokens=3 delims=:. " %%j in ("%time%") do set t3=%%j

set rdate=%d1%-%d2%-%d3%_%t1%_%t2%_%t3%
set logFullName=D:/apps/logs/driverplat/startService%rdate%

echo 启动服务实例clustertomcat7_node01 port:9001
net start Tomcat7Driverplat9001  >>  %logFullName%-node01.txt 2>&1 &

echo 启动服务实例clustertomcat7_node02 port:9002
net start Tomcat7Driverplat9002  >>  %logFullName%-node02.txt 2>&1 &

echo 启动日志:%logFullName%-nodeX.txt

pause
4.4)prdstop

for /f "tokens=1 delims=/ " %%j in ("%date%") do set d1=%%j
for /f "tokens=2 delims=/ " %%j in ("%date%") do set d2=%%j
for /f "tokens=3 delims=/ " %%j in ("%date%") do set d3=%%j
for /f "tokens=1 delims=: " %%j in ("%time%") do set t1=%%j
for /f "tokens=2 delims=: " %%j in ("%time%") do set t2=%%j
for /f "tokens=3 delims=:. " %%j in ("%time%") do set t3=%%j

set rdate=%d1%-%d2%-%d3%_%t1%_%t2%_%t3%
set logFullName=D:/apps/logs/driverplat/stopService%rdate%

echo 停止服务实例clustertomcat7_node01 port:9001
net stop Tomcat7Driverplat9001  >>  %logFullName%-node01.txt 2>&1 &

echo 停止服务实例clustertomcat7_node02 port:9002
net stop Tomcat7Driverplat9002  >>  %logFullName%-node02.txt 2>&1 &

echo 停止日志:%logFullName%-nodeX.txt

pause

5)huoquipdizhi
    /**获取本本地主机地址*/
    public static String getLocalHost() {
        try {
            return InetAddress.getLocalHost().getHostAddress();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**获取远程主机地址*/
    public static String getRemoteHost(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }




阅读更多
换一批

没有更多推荐了,返回首页