项目中遇到的问题及解决办法

1、中文乱码问题

通过编写一个类实现Filter(过滤器)接口,重写里面的方法,并在doFilter这个方法里面设置字符编码为utf-8,通过ServletRequest.setCharacterEncoding(”utf-8”)来设置;这里之所以用自定义filter(过滤器)来解决这个问题,是因为过滤器在HttpServletRequest到达Servlet之前,会被拦截下来,只有执行过滤器的doFilter方法才会转到下一个链中,注意,需要在web.xml文件中配置信息来创建Filter实例对象;

如果这样都还未解决问题的话,可以修改tomcat目录下的config文件目录下的server.xml文件,需要为每个Connector节点加上一个属性:useBodyEncodingForURI=”true”;

2、表单重复提交问题

我的做法是在服务器端利用session来防止表单重复提交,具体的做法是:在服务端随机生成一个token,同时在当前用户的Session中保存这个token,然后将token发送到客户端的form表单中,在form表单中使用隐藏域来储存这个token

<input type=”hidden” name=”token” value=”${token}”/>采用EL表达式来取出这个值;在表单提交的时候,连同这个token一起提交到服务器端,然后再服务器端判断客户端提交上来的token与服务器端生成的token是否一致,如果不一致,则就是重复提交了,此时服务器端不再处理这个重复提交的表单;如果相同则处理表单,并且清除当前用户的Session中的token,这样第二次提交的时候服务器端的token就不存在了;当然还可以用js来处理这个问题,当用户提交之后将提交按钮设置为disabled,使按钮不可以再触发;

3、数据库中两个表作自然连接(natural join)的时候,如果两个表存在相同名字的字段,比如说A表存在name字段,B表也存在name字段,那么当作A natural join B的时候,如果两个表中的name的内容不相等的时候,则也不会查找出那条内容;所以正确的做法就是将两个表中的name字段分别用a_name,b_name来表示;

4、做这个项目的时候,有一些功能比如说查看发布的职位是不需要用户登录之后的,而有一些操作比如过投递简历是需要用户登录之后才可以操作的,所以就需要为这些操作做出区别,我使用Spring Web MVC 的拦截器来实现这个功能的,首先对不需要用户登录的方法做出标记,比如说方法名用个后缀,然后在拦截器中判断当前请求的url是否包含这个标记,如果有则直接返回,如果没有则需要拦截下来,判断是否已经登录,只有登录了才可以进行操作,否则跳到登录页面;

自定义拦截器需要实现HandlerInterceptor,然后重写里面的preHandle,postHandle和afterCompletion方法,之前的那些操作都是在preHandle方法中实现的。注意拦截器需要在springmvc.xml文件中配置

时间: 2024-10-18 15:29:15

项目中遇到的问题及解决办法的相关文章

新建解决方案 在解决方案中添加项目中,解决方案消失的解决办法

新建空白解决方案的步骤:文件--新建项目--其他项目类型--Visual Studio 解决方案 这样就建立出了一个空白解决方案. 然后在资源管理器中可以添加项目,但是添加项目的时候会发现,解决方案消失了,解决办法  工具--选项--项目和解决方案(如果看不到这个,在下方有一个显示所有设置打勾),然后右边有一个 总是显示解决方案.勾上,解决方案就出现了 记录一下. 新建解决方案 在解决方案中添加项目中,解决方案消失的解决办法,布布扣,bubuko.com

项目中遇到并发问题和解决办法

最近在做一朋友帮砍价的活动.建立在微信公众号端的一个电商平台,然后我负责砍价模块. 由于这个模块高并发的几率比较大,所有有些逻辑模块就要采取一些缓存技术和排它锁的用户, 比如:由于项目需求是可以多个人同时砍价,我们又有砍到最低价格的限制,所以不进行处理的话很有可能就会超出我们所限制的价格!所以当用户砍价砍到最低价的时候就需要用到排它锁了 ,直接上代码: //说明砍到最低价 $order_price = $res['bg_order_price']-$res['bg_floorprice']; $

Eclipse中项目全部报错----项目全部打红叉的解决办法

今天遇到一个超级郁闷的事情,Eclipse新建的项目全部都打有红叉,我起初以为自 己可能是因为这两天一直在配置NDK开发环境方面的东西,是不是一不小心把那个地方给配置了,然后新建项目时项目都会出现红叉的效果.然后我clean了 一下,遭大糕了,所有的项目都出错了. 打开下面的错误提示: 错误的意思:Debug Certificate 过期了的缘故.百度了一下,果然也有遇到相似的问题,说是牵涉了一个私钥的时间期限问题. 解决办法是:进入:C:\Documents and Settings\Admi

MyEclipse迁移过程中Tomcat版本不一致的解决办法

MyEclipse迁移过程中Tomcat版本不一致的解决办法 下面就是在MyEclipse2013迁移被Tomcat6.0X绑定的项目迁移到MyEclipse2014 Tomcat8.0X,报如下problems那栏的错误: 看见这个迁移过程中Tomcat版本不一致的错误,知道了就比较简单,不知道的时候就比较难了,解决办法如下: 1.查找到MyEclipse里面的菜单栏里面的MyEclipse 2.点击MyEclipse里面的Migrate Projects选项后,就出现如下图: 3.点击上图里

SVN版本冲突中 Files 的值“ &lt; &lt; &lt; &lt; &lt; &lt; &lt; .mine”无效路径中具有非法字符的解决办法

.NET 中 SVN版本冲突中 Files 的值“ < < < < < < < .mine”无效路径中具有非法字符的解决办法: 一. 1.将项目逐个进行编译,会弹出上面的错误,这时候将项目隐藏的文件全部显示,删除 /bin 和 /obj 目录,重新编译,这个时候上面的错误会减少,剩余几个错误,就说明有几个项目的编译出错. 2.继续按照方法一,去编译其他的项目.注意:删除/bin 和 /obj 目录后再编译. 二. 还有一个地方,也会导致这个错误,在项目文件中,就是

cocopods安装使用和安装过程中遇到的问题及解决办法

在osx 10.11之前cocopods问题不多,但是升级到11之后的版本,之前的cocopods大多用不了,需要重新安装,对于我这种使用测试版系统的技术狂来说,每次都需要重新安装很多东西, 当然,cocopods也避免不了安装很多次了. 对于新手来说,使用cocopods开发,还是节省了相当多的开发时间,以下便是cocopods安装和安装过程中遇到的问题及解决办法: 1.cocopods 安装:http://www.cnblogs.com/surge/p/4436360.html 2.出现以下

在vue中使用 layui框架中的form.render()无效解决办法

下面简单介绍在vue中使用 layui框架中的form.render()无效解决办法. 原文地址:小时刻个人技术博客 > http://small.aiweimeng.top/index.php/archives/layuiForm.html 近期开发的项目中前端ui框架用的是Layui,数据渲染使用vue去渲染,当我用vue渲染表单控件的数据时,会出现控件被禁用的情况,例如:select下拉等,于是去看文档,按照文档说的写了,结果然并卵,( ̄▽ ̄)".搞了半天都没搞好.然后在百度搜索了v

linux中无 conio.h的解决办法

conio.h不是C标准库中的头文件,在ISO和POSIX标准中均没有定义.conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等.大部分DOS,Windows,Phar Lap,DOSX,OS/2等平台上的C编译器提供此文件,UNIX和Linux平台的C编译器本身通常不包含此头文件,但已经有其兼容包,可参考: http://conio.sourceforg

GDI+中发生一般性错误的解决办法(转载)

今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误"的异常.于是开始"摆渡",并寻找到了解决办法:赋予 NETWORK SERVICE 帐户以写权限. 以下为晚上寻找到的资料: 在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致"GDI+ 中发生一般性错误"的发生,通常有以下三种