项目运维问题总结

本文详细探讨了在软件开发过程中遇到的八个常见问题,包括JSP预编译文件管理、Struts2配置错误、中文数据提交方式、JavaScript事件处理、AJAX与Response Writer使用、字符串拼接与解析、SQL Server Case When语法应用以及Hibernate命名查询注意事项。通过这些实例分析,旨在帮助开发者避免常见陷阱,提升编程效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、项目更新文件的时候一定要删除服务器对jsp预编译生成的文件目录。(例如在resin下就是:webapps/项目目录/WEB-INF/work)否则可能产生一些很隐蔽的问题,例如,你的JSP页面引用了一个其他类的静态常量,而你修改了这个静态常量的值,项目更新的时候,你更新了常量文件的class文件,没有更新JSP文件。这时候你访问这个JSP页面,得到的常量还是原先的值。因为resin服务器认为这个JSP没有修改,所以不对它进行重新编译,还是使用原来预编译的文件。

 2、Struts2配置result结果类型为redircetAction(早期版本为redirect-action)时,不能加action的后续,否则将接收不到通过URL传递过去的参数。

 3、如果向后台提交的数据有中文,那么最好使用post方式提交表单,否则可能会产生乱码问题。

4、一直以为js的onchange是实时比较输入框的内容而触发的,现在才发现是改变内容,并且失去焦点才触发。

5、response.getWriter().write();方法可以接受String、int等多种类型的参数,但是如果使用AJAX来获取后台传递过来的字符串时,最好使用String类型,如果使用int等其他类型,会导致JS将接受的参数解析为乱码。

6、在页面上用JS拼接字符串时如果使用了"|"(竖线),那么在后台分拆的时候不能简单地split("|");,这样会导致其将每个字符拆分成一个元素,因为"|"在Java的正则表达式里有特殊含义。所以必须转义,使用"\\|"即可。

7、SQL SERVER 中的Case when 判断,当前边的When中的条件为“真”时,就不会进行下边的When的判断了。

例如:

select case when 1 = 1 then 1
                      when 2 = 2 then 2
             end

这个语句返回的是1,

而这个语句:

select case when 2 = 2 then 2
                      when 1 = 1 then 1
             end

则返回2。

因为Case When的顺序可能对查询结果产生很大的影响,在写SQL时要特别注意。

 

8、当使用Hibernate的命名查询,直接使用原生SQL来查询的话,一定要保证每一个列都有一个唯一的名称或别名。如:

     select id, isnull(num, 0), isnull(price, 0) from 表名

    这里有两项是没有名称的,那么Hibernate在执行的时候能找到"num" 列的值,但是找不到name字段的值,例如id = 1,  num = 10,  price = 100,那么使用Hibernate查询的结果将是 1      10        10

如果是:select id, isnull(num, 0) as num, isnull(price, 0) as price from 表名   则查询结果将是正确的:1    10    100

如果所有项都没有名称,那么查询就可能会报错了。

 

(将工作中遇到的问题总结下来,以备查看。未完待续。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值