J2EE常见问题记录

1.springmvc 使用中的错误信息

    (1)NetworkError: 400 Bad Request

        该错误是springmvc将页面提交信息映射到controller中参数或者bean时,参数类型不匹配导致

        比如页面value=“”,而后台bean中定义为private int id;

 

2.Hibernate

     (1)Hibernate中Entity中尽量避免使用java中基本类型int,long等,改用包装类型Integer,Long,因为在数据库中记录转化为Entity时,遇到null无法赋值给int,long

 

      (2)hibernate级联更新时,没有执行delete

 

@Entity
@Table (name = "BSS_PRODUCT")
public class Product
        implements Serializable
{
    @Id
    @GeneratedValue (generator = "SEQ_BSS_PRODUCT")
    @SequenceGenerator (name = "SEQ_BSS_PRODUCT", sequenceName = "SEQ_BSS_PRODUCT")
    private int id;
    @OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "product", orphanRemoval = true)
    private List<FeeItem> feeItems;
        public List<FeeItem> getFeeItems()
    {
        return feeItems;
    }

    public void setFeeItems(List<FeeItem> feeItems)
    {
    	if(null==this.feeItems){
    		this.feeItems = feeItems;
    	}else{
                //这里不能直接this.feeItems = feeItems,因为hibernate已经将feeItems这个集合放到hibernate的对象池当中,首先应该告诉hibernate删除掉对象池中集合对象,必须改为如下实现
    		this.feeItems.clear();
    		this.feeItems.addAll(feeItems);
    	}
    }
}

 

 

 3.fastjson问题

    (1)转换后字符串含有引用类型{"$ref": "$.itemSkuList[0].itemSpecificationList[0]"}   

    private SerializerFeature feature = SerializerFeature.DisableCircularReferenceDetect;

    String jsonString = JSON.toJSONString(objectToConvert,feature);

 

     如果是springmvc,增加以下配置:

     

<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
			<bean id="fastJsonHttpMessageConverter"
				class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
				<property name="supportedMediaTypes">
					<list>
						<value>application/json;charset=UTF-8</value>
					</list>
				</property>
				<property name="features">
					<array value-type="com.alibaba.fastjson.serializer.SerializerFeature">
						<value>DisableCircularReferenceDetect</value>
					</array>
				</property>  
				<!--<property name="serializerFeature"> -->
				<!--这个地方加上这个功能吧,能自己配置一些东西,比如时间的格式化,null输出""等等 -->
				<!--</property> -->
			</bean>
     (2)被转化为JSON字符串对象中某个属性不需要被fastjson序列化,在变量定义处或者变量get方法处添加@JSONField(serialize=false) 官方API说明如下:
com.alibaba.fastjson.annotation.JSONField

@Target(value={FIELD, METHOD, PARAMETER})
@Retention(value=RUNTIME)
Note: This element neither has attached source nor attached Javadoc and hence no Javadoc could be found.
例子如下:
    @JSONField(serialize=false)
    public Product getProduct() {
        return product;
    }
   4.myibatis     1)通过string传入单个参数到myibatis两种方法         方法一:         在DAO方法上添加@Param,如下:
User findByUsername(@Param(value="username") String username) throws Exception;
	<select id="findByUsername" parameterType="java.lang.String"
		resultType="User">
		SELECT
		<include refid="columns_user"></include>
		FROM sys_user
		WHERE 1=1
		<if test="username!= null and username!= ''">
			AND user_name=#{username,jdbcType=VARCHAR}
		</if>
	</select>
           方法二:          在DAO中方法保持不变,但在XML中使用_parameter
User findByUsername(@Param(value="username") String username) throws Exception;
	<select id="findByUsername" parameterType="java.lang.String"
		resultType="User">
		SELECT
		<include refid="columns_user"></include>
		FROM sys_user
		WHERE 1=1
		<if test="_parameter!= null and _parameter!= ''">
			AND user_name=#{_parameter,jdbcType=VARCHAR}
		</if>
	</select>
    2)myibatis配置文件中jdbcType类型值写错后,导致web启动卡停,报错如下:
三月 14, 2017 3:22:29 下午 org.apache.catalina.core.ApplicationContext log
信息: No Spring WebApplicationInitializer types detected on classpath
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
三月 14, 2017 3:22:29 下午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
[INFO ] localhost-startStop-1 2017-03-14 15:22:30,960               com.mchange.v2.log.MLog     - MLog clients using log4j logging.
[INFO ] localhost-startStop-1 2017-03-14 15:22:31,024      com.mchange.v2.c3p0.C3P0Registry     - Initializing c3p0-0.9.2.1 [built 20-March-2013 10:47:27 +0000; debug? true; trace: 10]
     解决办法:自己检查myibatis的XML配置文件,修复错误配置值

 5.linux常用命令

#查找当前目录下.phtml文件中,最近30分钟内修改过的文件
find . -name '*.phtml' -type f -mmin -30

#查找当前目录下.phtml文件中,最近30分钟内修改过的文件的详细情况
find . -name '.phtml' -type f -mmin -30 -ls

#查找当前目录下,最近1天内修改过的常规文件
find . -type f -mtime -l

#查找当前目录下,最近1天前(2天内)修改过的常规文件
find . -type f -mtime +1

6.oracle

    6.1 ORA-01034和ORA-27101解决办法

        问题:

	ORA-01034: ORACLE not available
	ORA-27101: shared memory realm does not exist

        解决办法:

	sqlplus /nolog;
	connect / as sysdba;
	shutdown immediate;
	startup;

 

7. J2EE中VO  DTO  DO  PO总结



       VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。

       DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。

       DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。

       PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。

猜你喜欢

转载自aperise.iteye.com/blog/2230816