JSP页面中(按钮)事件触发问题

deoline 2010-10-26 04:08:52
由于刚用JSP,对于很多问题都不是太明白. 比如在一个JSP页面中,如果有三个按钮,分别为:新增,删除和修改.那么当客户端用户在点击这个三个不同的按钮时,JSP是如何根据按钮的不同而执行不同的程序呢? 比如点击新增按钮,jsp程序将执行在数据库中插入一条新纪录的操作. 不知道现在jsp比较常用的方法是怎样解决这个问题,请高手帮忙,谢谢!
备注:不要javascript方案,因为有些东西是javascript做不到的.
...全文
1412 点赞 收藏 38
写回复
38 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wangcfxbg 2010-10-28
url后加type
type=add|modify|delete

action里:request.getParameter("type")
回复
宁波朱超 2010-10-28
呵呵
隱藏表單域
onclick="xxx(a)"
onclick="xxx(b)"
onclick="xxx(c)"

xxx(o)
獲取O提交到不同的action里去



回复
跑跑鱼 2010-10-28
[Quote=引用 360 楼 ghsau 的回复:]
[/Quote] javascript很好,很强大!只有你想不到的,没有它做不到的!
回复
zhoudingliang 2010-10-28
根据不同参数
回复
他山之石头 2010-10-28
javascript很好,很强大!只有你想不到的,没有它做不到的!
回复
他山之石头 2010-10-27
这是我最先想到的,最快的,也是最简单的方法!
希望对LZ有帮助!
回复
他山之石头 2010-10-27
很简单,通过js控制form要提交的action,

<form name="thisform" method="post">
<input type="button" value="添加" onclick="add()"/>
</form>


function add() {
document.form的name.action="要提交的地方";
document.form的name.submit();
}

这里只写一个添加的,修改,删除这么写也可以,也可以把他们三个写在一个方法里,然后通过传参数过来判断具体点击的是哪个按钮
回复
NewMoons 2010-10-27
楼主,我也是从CS转到BS的。体会很深
CS和BS虽然在设计模式上基本是共通的,但在开发架构上有很大的不同。
因为CS的运行代码在客户端,并且可以访问本机的任何资源,所以你会觉得很多非常简单的操作到了BS会很麻烦。因为BS的运行代码大多在服务器端,jsp的代码都是在服务器端运行的,所以你不能简单的用过去的CS窗口代替现在的jsp页面。
过去在CS窗口响应事件很简单,只需加3个按钮,分别写事件提交数据即可,因为这三个按钮的代码是直接在客户端执行的,相当于BS的js。
现在jsp页面的代码是在服务器端执行的,当你看到最终页面时,是jsp生成的html代码在浏览器上的显示而已。所以,你要想实现类似CS下窗口的响应事件,就必须要调用客户端的脚本代码,即类似javascript之类的语言。这时和java已经没有任何关系了。
所以,你说的JavaScript做不到,不是它真的做不到,是你还没有了解BS的运行机制,不知道js和jsp使用场所的区别而已。
最后总结一下:如果要想动态提交数据(一般是表单form,很少用url提交,除非数据很简单。)就必须要使用js。如果不想用js,又不想用多个表单来区分提交数据。也可以使用3个submit标签按钮提交,在服务器判断那个submit有值就可区分用户点击了哪个按钮。注意,用普通的button标签不行,因为它本身的值不能被提交到服务器,如果要用就又要使用js了。呵呵,不知道说明白了没有。
回复
wengebin001 2010-10-27
小声问问楼主。。。Javascript你认为做不到什么呢? 嫌它响应速度太快了吗?








Tag: www.d-niu.com
回复
回复
kokorenfeng 2010-10-27
按妞的onclick事件跳转到action中做处理
window.location.href='';
....../user.jsp?method=add
....../user.jsp?method=modify
....../user.jsp?method=delete

回复
helloword_xue 2010-10-27
还是js好用!简单
回复
a605501800 2010-10-27
可以在表单里面加一个隐藏域,区分是哪个按钮事件,表单跳转到同一个方法里面,调用同一个方法,在方法里面根据要求调用不同事件。action里面的方法可以
if (add){
……
}else if (update){
……
}else if (delete){
……}
回复
tongxingzhen123 2010-10-27
很简单的啊
回复
deoline 2010-10-27
[Quote=引用 5 楼 newmoons 的回复:]
既然没有使用框架,那就是纯jsp代码了。(我估计楼主是从CS架构转来的,所有操作时一个窗口,这里就比作成一个jsp页面好了,呵呵。)
在提交jsp表单的时候在action地址后面加一个参数来区分不同的提交,比如
....../user.jsp?method=add
....../user.jsp?method=modify
....../user.jsp?method=delete
不过……
[/Quote]
你说的对,以前是转搞Oracle和SQL Server数据库的,也搞过CS架构的程序,还搞过.net架构,刚接触到jsp,想弄明白这期间的不同.
回复
deoline 2010-10-27
[Quote=引用 11 楼 javader 的回复:]
最简单的方法是使用JS控制,跳到不同的Action或者跳到同一个Action带不同的参数。这样代码比较简单清晰。
[/Quote]
可以举个例子?
回复
seadolphin 2010-10-27
有了ajax,这点好多了

[Quote=引用 24 楼 newmoons 的回复:]
楼主,我也是从CS转到BS的。体会很深
CS和BS虽然在设计模式上基本是共通的,但在开发架构上有很大的不同。
因为CS的运行代码在客户端,并且可以访问本机的任何资源,所以你会觉得很多非常简单的操作到了BS会很麻烦。因为BS的运行代码大多在服务器端,jsp的代码都是在服务器端运行的,所以你不能简单的用过去的CS窗口代替现在的jsp页面。
过去在CS窗口响应事件很简单,只需加3个按钮,分别写事件……
[/Quote]
回复
lk519186921 2010-10-27
第一、上面说的那种,用超链接<a href=" **/**/**servlet?method=add"是么的

第二、使用AJAX和JQUERY结合的异步传输技术,代码全是封装好的,调用的话很简单,但是如果不懂得话就不行了,进我的共享的资源空间看一下,我写了5~6个关于这种封装使用的小例子,全是调试通过的,你可以看看能不能帮上你
回复
deoline 2010-10-27
[Quote=引用 25 楼 ghsau 的回复:]
很简单,通过js控制form要提交的action,

HTML code

<form name="thisform" method="post">
<input type="button" value="添加" onclick="add()"/>
</form>



JScript code

function add() {
document.f……
[/Quote]

了解,继续关注大家的回答,好好的了解一下.Thanks a lot!
回复
deoline 2010-10-27
[Quote=引用 24 楼 newmoons 的回复:]
楼主,我也是从CS转到BS的。体会很深
CS和BS虽然在设计模式上基本是共通的,但在开发架构上有很大的不同。
因为CS的运行代码在客户端,并且可以访问本机的任何资源,所以你会觉得很多非常简单的操作到了BS会很麻烦。因为BS的运行代码大多在服务器端,jsp的代码都是在服务器端运行的,所以你不能简单的用过去的CS窗口代替现在的jsp页面。
过去在CS窗口响应事件很简单,只需加3个按钮,分别写事件……
[/Quote]

感谢,你说的很明白,这些道理我还是比较能容易接受的,因为搞过.net,在这方面.net都能很轻松的做到.所以我是想了解一下jsp是否也可以和.net一样执行服务器响应事件.
回复
加载更多回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2010-10-26 04:08
社区公告
暂无公告