由于刚用JSP,对于很多问题都不是太明白. 比如在一个JSP页面中,如果有三个按钮,分别为:新增,删除和修改.那么当客户端用户在点击这个三个不同的按钮时,JSP是如何根据按钮的不同而执行不同的程序呢? 比如点击新增按钮,jsp程序将执行在数据库中插入一条新纪录的操作. 不知道现在jsp比较常用的方法是怎样解决这个问题,请高手帮忙,谢谢!
备注:不要javascript方案,因为有些东西是javascript做不到的.
备注:不要javascript方案,因为有些东西是javascript做不到的.
在提交jsp表单的时候在action地址后面加一个参数来区分不同的提交,比如
....../user.jsp?method=add
....../user.jsp?method=modify
....../user.jsp?method=delete
不过,js还是要用的,就是拼上面的地址操作参数method,除非你是3个不同的表单,地址就直接写死好了。
让它去处理查询插入
要保存到数据库的数据才使用表单
在这里只需要一个<a href="add.jsp?id=xxx"
说说我的建议:
纯jsp
新增 add.jsp
修改 modify.jsp
删除 在当前页执行
每一个内容读出来后,都有一个id,所以可以直接传递参数
add.jsp?id=xxx
modify.jsp?id=xxx
执行删除的页?id=xxx用servlet,可以写一个调遣器继承servlet
根据判断请求的参数执行相应的操作
简单的做法是每个button对应不同的js方法或者对应一个传参的js方法
然后在js方法里设置action的跳转和提交
window.location.href='';
....../user.jsp?method=add
....../user.jsp?method=modify
....../user.jsp?method=delete
Tag: www.d-niu.com
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了。呵呵,不知道说明白了没有。
<input type="button" value="添加" onclick="add()"/>
</form>
function add() {
document.form的name.action="要提交的地方";
document.form的name.submit();
}这里只写一个添加的,修改,删除这么写也可以,也可以把他们三个写在一个方法里,然后通过传参数过来判断具体点击的是哪个按钮
感谢,你说的很明白,这些道理我还是比较能容易接受的,因为搞过.net,在这方面.net都能很轻松的做到.所以我是想了解一下jsp是否也可以和.net一样执行服务器响应事件.
了解,继续关注大家的回答,好好的了解一下.Thanks a lot!
if (add){
……
}else if (update){
……
}else if (delete){
……}
隱藏表單域
onclick="xxx(a)"
onclick="xxx(b)"
onclick="xxx(c)"xxx(o)
獲取O提交到不同的action里去
type=add|modify|deleteaction里:request.getParameter("type")