Java枚举类型代码的二逼写法和艺术写法

最近遇到一种需求场景:使用一个类封装Java服务端返回的(返回状态码,返回信息字符串)信息,比如(0,操作成功)、(1,新增失败)、(2,查询失败)等状态。作为一枚Java屌丝,我想到这种常量信息最好写到一个单独的类里面,并且用public static final的形式修饰,为了将返回码code和返回信息msg两者绑定起来可以提供一个公用方法。我做了以下两个努力,一是将两个返回码和返回信息的变量名写的相似,看代码的人一看就知道两个变量的含义和关系;第二个则提供一个根据返回码获得对应的返回信息的方法。写完后自我感觉良好,感觉满足了需求很是完备,于是出现了以下的2B代码:

枚举状态码和状态信息的2B写法

package net.crazyant;

/**
 * 
 * 返回给客户端的状态码和状态信息
 * 
 * @author crazyant.net
 *
 */
public class CommunicateCodeOne {
	/**
	 * 状态码:操作成功
	 */
	public static final int OPERATION_SUCCESS_CODE = 0;

	/**
	 * 状态信息:操作成功
	 */
	public static final String OPERATION_SUCCESS_MSG = "操作成功";

	/**
	 * 状态码:新增失败
	 */
	public static final int ADD_DATA_ERROR_CODE = 1;

	/**
	 * 状态信息:新增失败
	 */
	public static final String ADD_DATA_ERROR_MSG = "新增失败";

	/**
	 * 状态码:查询失败
	 */
	public static final int QUERY_DATA_ERROR_CODE = 2;

	/**
	 * 状态信息:查询失败
	 */
	public static final String QUERY_DATA_ERROR_MSG = "查询失败";

	/**
	 * 根据状态码获取状态信息
	 * 
	 * @param communicateCode
	 *            状态码
	 * @return 状态信息字符串
	 */
	public static String getMsg(int communicateCode) {
		String returnMsg = null;
		switch (communicateCode) {
		case OPERATION_SUCCESS_CODE:
			// 操作成功
			returnMsg = OPERATION_SUCCESS_MSG;
			break;
		case ADD_DATA_ERROR_CODE:
			// 新增失败
			returnMsg = ADD_DATA_ERROR_MSG;
			break;
		case QUERY_DATA_ERROR_CODE:
			// 查询失败
			returnMsg = QUERY_DATA_ERROR_MSG;
			break;
		}
		return returnMsg;
	}
}

继续阅读Java枚举类型代码的二逼写法和艺术写法

将普通Maven Spring项目转换成Web项目的方法

最近在按照李刚的《疯狂J2EE》一书学习Spring,其中第7章的一些代码是ant编译的,而公司用的是Maven,所以想要将其部署并转换成Maven Spring Web项目来执行一下。

本文用的是《疯狂j2ee》第7章的request_scope代码;

1、建立普通的maven project;

1

2

2、转换成web项目,这里选2.5版本,注意有的WEB项目的webcontent目录会有所不同,可以点击”further configuration available”按钮进行设定,设定的时候,路径从src目录开始复制即可。

3

配置WEB目录所在的位置
配置WEB目录所在的位置

3、把光盘的代码复制到相应的位置

这里看到test.jsp报错了,因为没有Spring的jar包导致,第4步会在Pom.xml中配置这个依赖;

4

4、在pom.xml中增加依赖的Spring的JAR包

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>pss</groupId>
	<artifactId>chapter75-requestScope</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>4.0.6.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>4.0.6.RELEASE</version>
		</dependency>
	</dependencies>
</project>

 

5、在web.xml中配置部署Spring配置文件

<?xml version="1.0" encoding="GBK"?>

<web-app 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"
	version="3.0">

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
</web-app>

 

6、设定将Maven的jar包也发布到Tomcat的web目录中,如果依赖了其他的子项目,也需要在这里进行添加,举个例子,如果你的项目用到了项目组的common的JAR包,那么在这里需要也加上才能正确的被部署。

5

7、新建一个server,把该web项目部署在其中

6

8、修改server中tomcat的路径并启动server

8

运行,看到结果;

7

总结:

1、需要将项目转成web项目;

2、需要在pom中引入spring的context和web两个依赖包;

3、需要在项目部署的设置中,将maven的包也部署一下;

3、需要在web.xml中指定applicationContext.xml的部署位置;

本文地址:http://crazyant.net/1607.html

Rational Rose根据Java代码自动生成类图(教程和错误解决)

Rational Rose有个很方便的功能,将项目中的JAVA代码自动转换成UML类图。

根据Java代码自动生成UML图

1、新建一个ROSE工程,选择J2EE模板
2、如图进行操作

92119b2b044ee3fee6cd4033.jpg

xxxx

3、在出现的界面中,CLASSPATH中加入源代码的目录,加入支持的包,点’ADD RECURSIVE’点 ‘SELECT ALL‘,‘ 点REVERSE ‘,完成后没任何提示,点’DONE’结束。逆向工程完成。
4、逆向工程以后不会自动生成类图,但在logical view 和component view 里面按照你的java包结构会自动生成相应的包和类,要按照自己的要求建立类图。下面我们将所选包下的所有类显示在新建类图中:
5、ROSE里新建CLASS DIAGRAM,然后把类包一个个拖到右侧图中,点菜单上的’QUERY’下的’ADD CLASS’,确定。

Rational Rose 逆向工程(java) 常见问题解决

1、 rose逆向工程的时候,属性类型表现为:Logical View::java::lang::

解决办法:
菜单->Tools->Java/j2ee->Project
选择Fundamental Type 页面
Remoe Common JDK Classes
Add Common JDK Classes

确定即可,也许是Rose的Bug

2. rose逆向工程的时候,报错,一般是类中没有引用了一些包

在菜单view-》log 选中就能看到log window中出错信息,一般可能是找不到类,你在tools-java/j2ee-project specification里面设置好项目的相关项,比如classpath等等
解决办法:菜单->Tools->Java/j2ee->project specification,选择Class Path页面,将相应的包加入即可

来源:http://hi.baidu.com/suofang/item/254ef5f3298bf60fc6dc45ae

JSP使用JNA调用DLL函数遇到的几个问题

最近一个JSP项目需要用到分词模块,而分词模块实用C++写成的DLL库。于是上网搜各种方法,最后选择了JNA作为JSP调用DLL的工具。

JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。

JNA的使用方法有很多,这里只总结下我遇到的问题:

DLL放置的路径问题

JSP本身分为bean的src目录和WebRoot的脚本目录,而我们的DLL需要在src下的类中调用,于是遇到了将DLL和资源文件放置到什么地方的问题。

最后解决方法:将调用的DLL和LIB文件拷贝到C:/Windows/System32目录下可以访问。

解决过程:我试过将这些文件放到Src目录下,然后用Class.class.getResource("/").getPath()这种方法得到类的class路径,再得到资源文件的路径,结果没有成功。

DLL调用资源的路径问题

DLL可能会调用其他资源文件,比如我这里需要用到词典,路径也是个问题,不过这个较为简单,很容易解决:

将资源文件目录,拷贝到Src目录下面。在程序中使用Class.class.getResource("/").getPath()获得编译后的类所在的根目录,再连接上资源文件即可。

java环境变量配置

  1. 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\java\jdk1.5.0_08;
  2. 安装完成后,右击“我的电脑”,点击“属性”;
  3. 选择“高级”选项卡,点击“环境变量”;
  4. 在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”;
  5. JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:\java\jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依*此变量);
    Path使得系统可以在任何路径下识别java命令,设为: 继续阅读java环境变量配置