求助:JSP的删除修改语句写在SERVLET里怎么实现

加嘞个油 2011-10-11 05:31:00
本人菜鸟求指导,我写了个DBBean的类放的是连接数据库和增删改的代码,用jsp页面调用没问题,但是现在不想写在jsp页面上,增加已经用servlet实现了,就是想请教下如何把删除和修改也放在一个servlet里面实现,然后jsp页面如何调用。。我目前还没有学到框架,不要说框架哦。麻烦高手帮我写两句代码吧~~~~
...全文
639 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
加嘞个油 2011-10-13
  • 打赏
  • 举报
回复
哎。没人回答了,准备结贴呀
加嘞个油 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 zh0134 的回复:]
这个编码问题很麻烦 要纠结很多地方的编码。。。。
[/Quote]

。。。不是吧。我所有编码都设置的utf-8呀。
CloudX2019 2011-10-13
  • 打赏
  • 举报
回复
这个编码问题很麻烦 要纠结很多地方的编码。。。。
加嘞个油 2011-10-13
  • 打赏
  • 举报
回复
不要沉。。。高手不要吝啬。麻烦看下最后一个问题。然后就结贴了
加嘞个油 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 zh0134 的回复:]
引用 17 楼 z7452678 的回复:
但是我的删除和修改是用的out print输出的表格,现在是加了个链接out.println("<td align=center><a href='servlet/deleteServlet?num="+ rs.getString("num").trim()+"'>删除</a>"+"</td>"); 这个语句里面怎么加一个参数让servlet判断呢?
……
[/Quote]

感谢回复,我去试试!还能帮我再看个问题吗?SERVLET里面的JAVASCRIPT语句提示框不能显示中文,是问号。

代码如下
		else{
PrintWriter out = response.getWriter();
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
out.println("<script language = javascript>alert('编号为空,请重新输入!')");
out.println("window.history.go(-1)</script>");
}
CloudX2019 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 z7452678 的回复:]
但是我的删除和修改是用的out print输出的表格,现在是加了个链接out.println("<td align=center><a href='servlet/deleteServlet?num="+ rs.getString("num").trim()+"'>删除</a>"+"</td>"); 这个语句里面怎么加一个参数让servlet判断呢?

[/Quote]


<a href='servlet/deleteServlet?num="+ rs.getString("num").trim()+"&type=?'>
这里type 可以自己设置
你可以设定type=1 为增加,2为修改 3为删除 ......
然后在servlet里面判断type的值就可以了
加嘞个油 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wudi1233 的回复:]
JSP直接传参数过去。点击不同按钮时候传递一个不同的参数,servlet直接在request中获取你要执行的动作。是要增加还是删除。
然后就是IF ELSE的事情了。
[/Quote]
谢谢各位了,我现在把增加删除修改分别写了3个servlet,还不会写到一个里面。
就是想知道,如何传递参数,增加比较好说,我加一个<input type="hidden" name="methodName" value="3"/> 这个3传递过去让函数判断,执行3的增加方法

但是我的删除和修改是用的out print输出的表格,现在是加了个链接out.println("<td align=center><a href='servlet/deleteServlet?num="+ rs.getString("num").trim()+"'>删除</a>"+"</td>"); 这个语句里面怎么加一个参数让servlet判断呢?

不知道我说的高手们能理解不,嘿嘿。初学好辛苦。
roycxshun 2011-10-12
  • 打赏
  • 举报
回复
原来是我理解错啦,是要在页面那里传参数过去进行方法的识别。
上面的朋友说的方法就对了。
wolf863292 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wudi1233 的回复:]
JSP直接传参数过去。点击不同按钮时候传递一个不同的参数,servlet直接在request中获取你要执行的动作。是要增加还是删除。
然后就是IF ELSE的事情了。
[/Quote]

+1.
初学servlet时,就这么用。
wudi1233 2011-10-12
  • 打赏
  • 举报
回复
JSP直接传参数过去。点击不同按钮时候传递一个不同的参数,servlet直接在request中获取你要执行的动作。是要增加还是删除。
然后就是IF ELSE的事情了。
roycxshun 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 z7452678 的回复:]

高手们都不在吗?帮帮忙。。。我在servlet又写了个删除,请问mainpage中怎么把num传过来。貌似原来的语句不行。Java code
public void delete(HttpServletRequest request, HttpServletResponse response)
throws ClassNotFoundException, SQLExce……
[/Quote]
仔细看看你的代码,你用的是sendRedirect,这上客户端跳转,如果你在这种情况下还需要传参数,只能用session或者cookie。
而一般情况下,我们就没必要用sendRedirect了,除非是那种未登录时跳转到登录页面的,那些一般是用这个。你可以直接。

request.setAttribute("num","num");
request.getRequestDispatcher("跳转到的页面").forward(request,response);

这里只会进行结果的转发,也就是服务器端的跳转,请求还在的。而上面的sendRedirect是二次请求,上次请求已经不在了。
而在JSP页面中,可以根据你自己喜欢,用EL表达式,可以像下面的
num:${num}
这种情况默认在request中取参数,{}里面的是参数名称,如果不清楚可以看看EL教程。
如果这个不懂,可以用
num:<%=request.getAttribute("num")%>
这样就可以取出了。
加嘞个油 2011-10-11
  • 打赏
  • 举报
回复
高手们都不在吗?帮帮忙。。。我在servlet又写了个删除,请问mainpage中怎么把num传过来。貌似原来的语句不行。
public void delete(HttpServletRequest request, HttpServletResponse response)
throws ClassNotFoundException, SQLException, ServletException,
IOException {
try {
DBBean dbbean_delete = new DBBean();
String ch = request.getParameter("num");
String sql = "delete from news where num='"+ch+"'";
dbbean_delete.update(sql);
dbbean_delete.close();
response.sendRedirect("/task/mainpage.jsp");
} catch (Exception ex) {
ex.printStackTrace();
}
}



mainpage里的语句,看是不是链接那里的语句有问题。
    		out.println("<tr>");
out.println("<td align=center>"+rs.getString("num").trim()+"</td>");
out.println("<td align=center>"+rs.getString("theme").trim()+"</td>");
out.println("<td align=center>"+rs.getString("author").trim()+"</td>");
out.println("<td align=center>"+rs.getString("date").trim()+"</td>");
out.println("<td align=center><a href='servlet/MyServlet?num="+ rs.getString("num").trim()+"'>修改</a>"+"</td>");
out.println("<td align=center><a href='servlet/MyServlet?num="+ rs.getString("num").trim()+"'>删除</a>"+"</td>");
}
out.println("</table>");
myDBbean.close();
zenki520 2011-10-11
  • 打赏
  • 举报
回复
 //信息删除方法
public void delete(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, ServletException, IOException{
Connection conn=null;
Statement stat=null;
conn=connect();
stat=conn.createStatement();
String id2=request.getParameter("id");
stat.execute("delete from student where id="+id2+"");
request.getRequestDispatcher("delete.jsp").forward(request, response);
}
//信息修改方法
public void update1(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, ServletException, IOException{
String id4=request.getParameter("id");
request.setAttribute("result", select(id4,""));
request.getRequestDispatcher("update1.jsp").forward(request, response);
}
public void update(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, ServletException, IOException{
Connection conn=null;
Statement stat=null;
String id3=request.getParameter("id");
String name3=request.getParameter("name");
String age3=request.getParameter("age");
String gender3=request.getParameter("gender");
String major3=request.getParameter("major");
conn=connect();
stat=conn.createStatement();
stat.execute("update student set id="+id3+",name='"+name3+"',age="+age3+",gender='"+gender3+"',major='"+major3+"' where id="+id3+"");
request.setAttribute("result", select(id3,""));
request.getRequestDispatcher("update.jsp").forward(request, response);
}

}

bohe_198878 2011-10-11
  • 打赏
  • 举报
回复
我没有在jsp中写代码的经历,怎么给你注释啊,而且我这写的只是纯粹为了简单也没给代码分层,你还是慢慢看吧
加嘞个油 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bohe_198878 的回复:]
package com.web;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
……
[/Quote]

大哥你能根据我的代码给几句 注释吗。。这样我自己理解起来能快一点,或者把我的代码修改一下。谢谢
bohe_198878 2011-10-11
  • 打赏
  • 举报
回复
这是我写的一个跟extjs结合的增删改查 希望对你有帮助
加嘞个油 2011-10-11
  • 打赏
  • 举报
回复
我的问题可能比较白痴,大家谅解下,刚学这个东西。能帮我说的就麻烦细说一下,写两句代码好吗?
bohe_198878 2011-10-11
  • 打赏
  • 举报
回复
package com.web;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.entity.User;
import com.util.Util;

public class UserServlet extends HttpServlet{
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// String s=request.getHeader("referer");
// System.out.println(s);
String url=request.getRequestURI();
String path=url.substring(url.lastIndexOf("/"),url.lastIndexOf("."));
Util.setEncoding(request, response);
if("/query".equals(path)){
Connection conn=null;
PreparedStatement stmt=null;
ResultSet rs=null;
String sql="select * from T_USER";
List<Object> lists=new ArrayList<Object>();
try{
conn=Util.getConnection();
stmt=conn.prepareStatement(sql);
rs=stmt.executeQuery();
while(rs.next()){
User user=new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setPassword(rs.getString(3));
lists.add(user);
}
}catch(Exception e){
e.printStackTrace();
}finally{
Util.close(conn);
}
PrintWriter out=response.getWriter();
out.print(Util.toJson(lists.toArray()));
out.close();
}else if("/add".equals(path)){
int id=Integer.parseInt(request.getParameter("id"));
String name=request.getParameter("name");
String password=request.getParameter("password");
Connection conn=null;
PreparedStatement stmt=null;
ResultSet rs=null;
String sql1="select * from t_user where id=?";
String sql="insert into t_user values(?,?,?)";
String sql2="update t_user set name=?,password=? where id=?";
try{
conn=Util.getConnection();
stmt=conn.prepareStatement(sql1);
stmt.setInt(1, id);
rs=stmt.executeQuery();
if(!rs.next()){
stmt=conn.prepareStatement(sql);
stmt.setInt(1, id);
stmt.setString(2, name);
stmt.setString(3, password);
stmt.executeUpdate();
}else{
stmt=conn.prepareStatement(sql2);
stmt.setString(1, name);
stmt.setString(2, password);
stmt.setInt(3, id);
stmt.executeUpdate();
}
}catch(Exception e){
e.printStackTrace();
}finally{
Util.close(conn);
}
}else if("/delete".equals(path)){
int id=Integer.parseInt(request.getParameter("id"));
Connection conn=null;
PreparedStatement stmt=null;
String sql="delete t_user where id=?";
try{
conn=Util.getConnection();
stmt=conn.prepareStatement(sql);
stmt.setInt(1,id);
stmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
Util.close(conn);
}
}else if("/modify".equals(path)){
int id=Integer.parseInt(request.getParameter("id"));
String name=request.getParameter("name");
String password=request.getParameter("password");
Connection conn=null;
PreparedStatement stmt=null;
String sql="update t_user set id=?,name=?,password? where id=?";
User user=null;
try{
conn=Util.getConnection();
stmt=conn.prepareStatement(sql);
stmt.setInt(1, id);
stmt.setString(2, name);
stmt.setString(3, password);
stmt.setInt(4, id);
stmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}
}else if("/queryOne".equals(path)){
int id=Integer.parseInt(request.getParameter("id"));
Connection conn=null;
PreparedStatement stmt=null;
ResultSet rs=null;
User user=null;
String sql="select * from t_user where id=?";
try{
conn=Util.getConnection();
stmt=conn.prepareStatement(sql);
stmt.setInt(1, id);
rs=stmt.executeQuery();
if(rs.next()){
user=new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setPassword(rs.getString(3));
}
}catch(Exception e){
e.printStackTrace();
}finally{
Util.close(conn);
}
PrintWriter out=response.getWriter();
out.println(Util.toJson(user));
out.close();
}
}
}
加嘞个油 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 roycxshun 的回复:]
你说你写了一个DBBean的类,那么就可以把它用单独的类文件来放啊,然后在servlet里面进行调用。其实servlet跟JSP实际上是一个东西,JSP会在后台编译成servlet。了解这个就没问题了。
[/Quote]

恩,是单独放了,增加我会调用了,删除修改怎么调用呢,具体传值什么的不会修改,能帮我改改么?求高手赐教,我先去研究研究
roycxshun 2011-10-11
  • 打赏
  • 举报
回复
你直接在servlet里面直接

DBBean myDbBean = new DBBean();
ResultSet rs=myDbbean.query("select * from news");

看到这样应该理解了吧,接下来就还是一样的遍历rs啦。
加载更多回复(3)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧