第一次做javaweb项目请教下关于后台更新的问题

时间:2022-06-05 12:58:22
刚出来实习,维护个项目,按要求做个后台更新页面,jsp不是我写,其实我也不太懂,就后端的代码我拼拼凑凑写了好久找到大概的思路。

以下如果说的有错误,还请见谅 第一次做javaweb项目请教下关于后台更新的问题
第一次做javaweb项目请教下关于后台更新的问题
就是在这个页面,当然了大学有很多,其实每个都差不多,客户要求是页面上有个编辑按钮和一个保存按钮
按下编辑,整个页面上的字段都可以修改,除了所在地区不会更改以外,应该所有信息都会在未来更新,不过我还是把所有字段都写进去了,他改也是他的事 第一次做javaweb项目请教下关于后台更新的问题


然后是不是他们打开jsp就在上面改,改完了通过表单提交action就转到我这个类里了
第一次做javaweb项目请教下关于后台更新的问题

我通过以下获取修改的字段
第一次做javaweb项目请教下关于后台更新的问题
是这样吧?

然后走下面的方法,我就写了一个方法,40个占位符。
第一次做javaweb项目请教下关于后台更新的问题

然后问题来了,页面所有字段都修改,包括所在省市 第一次做javaweb项目请教下关于后台更新的问题,那我就收到了全部修改的字段值,如果页面上只修改了学校名和校长?那我请求到的是不是只有这两个修改过的字段?可是我的执行sql里update了所有的字段值,那如果只修改了2个?剩下的那些会被null覆盖掉吗?还是维持原样?希望各位指点迷津!

17 个解决方案

#1


你确定,你的sql能执行成功吗?占位符不匹配

#2


表单按照当前的value传递参数,而不会管这个参数原来是什么值,有没有发生过改变

#3


引用 1 楼 yxb1173276058 的回复:
你确定,你的sql能执行成功吗?占位符不匹配

为什么啊?为什么不匹配,那应该怎么写呢

#4


引用 2 楼 yue_hu 的回复:
表单按照当前的value传递参数,而不会管这个参数原来是什么值,有没有发生过改变

也就是说我如果只修改北京大学的校长名字,其他的不改就提交过来,也只会把校长改了而已,其他都维持原样是吗

#5


引用 4 楼 zjy578561930 的回复:
Quote: 引用 2 楼 yue_hu 的回复:

表单按照当前的value传递参数,而不会管这个参数原来是什么值,有没有发生过改变

也就是说我如果只修改北京大学的校长名字,其他的不改就提交过来,也只会把校长改了而已,其他都维持原样是吗

对,前提是input没有设置为disabled。如果你没有修改过input中的值,他提交的值就是初始值。可以通过value属性设置初始值。

#6


引用 5 楼 yue_hu 的回复:
Quote: 引用 4 楼 zjy578561930 的回复:

Quote: 引用 2 楼 yue_hu 的回复:

表单按照当前的value传递参数,而不会管这个参数原来是什么值,有没有发生过改变

也就是说我如果只修改北京大学的校长名字,其他的不改就提交过来,也只会把校长改了而已,其他都维持原样是吗

对,前提是input没有设置为disabled。如果你没有修改过input中的值,他提交的值就是初始值。可以通过value属性设置初始值。

这些是前端要做的吧?关键那前端也是实习,很多也不会。默认是是不是就是有初始值的,还是说得设下参数才可以

#7


引用 6 楼 zjy578561930 的回复:
Quote: 引用 5 楼 yue_hu 的回复:

Quote: 引用 4 楼 zjy578561930 的回复:

Quote: 引用 2 楼 yue_hu 的回复:

表单按照当前的value传递参数,而不会管这个参数原来是什么值,有没有发生过改变

也就是说我如果只修改北京大学的校长名字,其他的不改就提交过来,也只会把校长改了而已,其他都维持原样是吗

对,前提是input没有设置为disabled。如果你没有修改过input中的值,他提交的值就是初始值。可以通过value属性设置初始值。

这些是前端要做的吧?关键那前端也是实习,很多也不会。默认是是不是就是有初始值的,还是说得设下参数才可以

默认为空,初始值可以通过input标签的value属性设置。前端主要工作是将页面美化,页面的逻辑还是需要开发写的。

#8


2楼说的是一种做法,相当于把所有的值都更新了一遍
但是我觉得最好是封装成对象,交给hibernate去更新
如果有很多属性,你这也写代码不累死啊。

#9


还是用对象接收值吧  这样写工作量太大了

#10


引用 9 楼 u010223407 的回复:
还是用对象接收值吧  这样写工作量太大了
无所谓的吧,只要这一个方法应该就够了吧,我已经写好了。

#11


引用 8 楼 zc881124 的回复:
2楼说的是一种做法,相当于把所有的值都更新了一遍
但是我觉得最好是封装成对象,交给hibernate去更新
如果有很多属性,你这也写代码不累死啊。

我经理说就用jdbc就可以了,反正就一个方法,这种页面比较特殊,除了更改就没添加和删除了,所以我就写了这一个方法,你看我这样写可以吗?我懂的不多,就知道这种土办法,以后慢慢学习

#12


感觉咱俩水平差不多

#13


引用 12 楼 bzsjy 的回复:
感觉咱俩水平差不多
哈哈,我刚入门,缺实战,很多理不清

#14


我觉得你可以把你提交的每个表单数据拿出来与数据库中数据进行比较,如果出现不同,就执行更新语句,相同就不变.

#15


引用 9 楼 u010223407 的回复:
还是用对象接收值吧  这样写工作量太大了
第一次做javaweb项目请教下关于后台更新的问题

#16


引用 14 楼 cqu20141693 的回复:
我觉得你可以把你提交的每个表单数据拿出来与数据库中数据进行比较,如果出现不同,就执行更新语句,相同就不变.

最终我这篇代码被经理骂的秃头了,他说能写出这样的思路,你也算是一窍不通了 第一次做javaweb项目请教下关于后台更新的问题
后来他给我写了,就是四十多个if,其实有框架,他自己写的,但是我只懂这些最底层的,所以他给我写了四十多个if,只要getparameter过来的数据不为null,就存入一个Stringbulid里,每个数据之间用,相连,然后利用正则去掉最后一个逗号,将最后的提交结果送入executeUpdate就可以了。

#17


两个办法咯!第一个全部update一次,这就要求前台把所有值传过来。第二个前台加载的时候把所有字段存起来,然后判断哪几个值修改了,传对应的值和一个判定参数。你后台就根据参数判断哪几个值发生了改变,写一个通用方法来更新一个字段,然后把所有update  sql一起去执行。不过我觉得第二个方法太蠢,还是用第一个吧

#1


你确定,你的sql能执行成功吗?占位符不匹配

#2


表单按照当前的value传递参数,而不会管这个参数原来是什么值,有没有发生过改变

#3


引用 1 楼 yxb1173276058 的回复:
你确定,你的sql能执行成功吗?占位符不匹配

为什么啊?为什么不匹配,那应该怎么写呢

#4


引用 2 楼 yue_hu 的回复:
表单按照当前的value传递参数,而不会管这个参数原来是什么值,有没有发生过改变

也就是说我如果只修改北京大学的校长名字,其他的不改就提交过来,也只会把校长改了而已,其他都维持原样是吗

#5


引用 4 楼 zjy578561930 的回复:
Quote: 引用 2 楼 yue_hu 的回复:

表单按照当前的value传递参数,而不会管这个参数原来是什么值,有没有发生过改变

也就是说我如果只修改北京大学的校长名字,其他的不改就提交过来,也只会把校长改了而已,其他都维持原样是吗

对,前提是input没有设置为disabled。如果你没有修改过input中的值,他提交的值就是初始值。可以通过value属性设置初始值。

#6


引用 5 楼 yue_hu 的回复:
Quote: 引用 4 楼 zjy578561930 的回复:

Quote: 引用 2 楼 yue_hu 的回复:

表单按照当前的value传递参数,而不会管这个参数原来是什么值,有没有发生过改变

也就是说我如果只修改北京大学的校长名字,其他的不改就提交过来,也只会把校长改了而已,其他都维持原样是吗

对,前提是input没有设置为disabled。如果你没有修改过input中的值,他提交的值就是初始值。可以通过value属性设置初始值。

这些是前端要做的吧?关键那前端也是实习,很多也不会。默认是是不是就是有初始值的,还是说得设下参数才可以

#7


引用 6 楼 zjy578561930 的回复:
Quote: 引用 5 楼 yue_hu 的回复:

Quote: 引用 4 楼 zjy578561930 的回复:

Quote: 引用 2 楼 yue_hu 的回复:

表单按照当前的value传递参数,而不会管这个参数原来是什么值,有没有发生过改变

也就是说我如果只修改北京大学的校长名字,其他的不改就提交过来,也只会把校长改了而已,其他都维持原样是吗

对,前提是input没有设置为disabled。如果你没有修改过input中的值,他提交的值就是初始值。可以通过value属性设置初始值。

这些是前端要做的吧?关键那前端也是实习,很多也不会。默认是是不是就是有初始值的,还是说得设下参数才可以

默认为空,初始值可以通过input标签的value属性设置。前端主要工作是将页面美化,页面的逻辑还是需要开发写的。

#8


2楼说的是一种做法,相当于把所有的值都更新了一遍
但是我觉得最好是封装成对象,交给hibernate去更新
如果有很多属性,你这也写代码不累死啊。

#9


还是用对象接收值吧  这样写工作量太大了

#10


引用 9 楼 u010223407 的回复:
还是用对象接收值吧  这样写工作量太大了
无所谓的吧,只要这一个方法应该就够了吧,我已经写好了。

#11


引用 8 楼 zc881124 的回复:
2楼说的是一种做法,相当于把所有的值都更新了一遍
但是我觉得最好是封装成对象,交给hibernate去更新
如果有很多属性,你这也写代码不累死啊。

我经理说就用jdbc就可以了,反正就一个方法,这种页面比较特殊,除了更改就没添加和删除了,所以我就写了这一个方法,你看我这样写可以吗?我懂的不多,就知道这种土办法,以后慢慢学习

#12


感觉咱俩水平差不多

#13


引用 12 楼 bzsjy 的回复:
感觉咱俩水平差不多
哈哈,我刚入门,缺实战,很多理不清

#14


我觉得你可以把你提交的每个表单数据拿出来与数据库中数据进行比较,如果出现不同,就执行更新语句,相同就不变.

#15


引用 9 楼 u010223407 的回复:
还是用对象接收值吧  这样写工作量太大了
第一次做javaweb项目请教下关于后台更新的问题

#16


引用 14 楼 cqu20141693 的回复:
我觉得你可以把你提交的每个表单数据拿出来与数据库中数据进行比较,如果出现不同,就执行更新语句,相同就不变.

最终我这篇代码被经理骂的秃头了,他说能写出这样的思路,你也算是一窍不通了 第一次做javaweb项目请教下关于后台更新的问题
后来他给我写了,就是四十多个if,其实有框架,他自己写的,但是我只懂这些最底层的,所以他给我写了四十多个if,只要getparameter过来的数据不为null,就存入一个Stringbulid里,每个数据之间用,相连,然后利用正则去掉最后一个逗号,将最后的提交结果送入executeUpdate就可以了。

#17


两个办法咯!第一个全部update一次,这就要求前台把所有值传过来。第二个前台加载的时候把所有字段存起来,然后判断哪几个值修改了,传对应的值和一个判定参数。你后台就根据参数判断哪几个值发生了改变,写一个通用方法来更新一个字段,然后把所有update  sql一起去执行。不过我觉得第二个方法太蠢,还是用第一个吧