页面没有传id的值,所以强转类型出错!!
修改一下
int id = request.getParameter("id")!=null && !request.getParameter("id").trim().equals("")?Integer.parseInt(request.getParameter("id")):0;
修改一下
int id = request.getParameter("id")!=null && !request.getParameter("id").trim().equals("")?Integer.parseInt(request.getParameter("id")):0;
谢谢!这个问题解决了.不过还有点疑问,比如我传过来的数据是空,我想判断是否为空然后在本页面进行提示.我在servlet中加了这段
if( request.getParameter("id")==null || request.getParameter("name")==null || request.getParameter("email")==null)
{
System.out.println("编号,姓名,邮箱都不能为空!");
request.getRequestDispatcher("update.jsp").forward(request, response);
return;
}不知道对不对?我试了一下还是会提示出错.
java.lang.NumberFormatException: For input string: ""
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:468)
java.lang.Integer.parseInt(Integer.java:497)
com.ch.control.Update.doPost(Update.java:38)还有一个问题,我做的是更新功能,jsp中输入了但提示更新失败.劳烦高手看看是jsp问题还是servlet的问题?servlet: public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html");
int id = request.getParameter("id")!=null && !request.getParameter("id").trim().equals("")?Integer.parseInt(request.getParameter("id")):0;
HttpSession session=request.getSession();
String sessionName=(String)session.getAttribute("name");
String name=request.getParameter("name");
String email=request.getParameter("email");
Message message=new Message();
MessageDAO dao=new MessageDAO();
message.setId(id);
message.setName(name);
message.setEmail(email);
try {
dao.update(message);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.getRequestDispatcher("update.jsp").forward(request, response);
}jsp:<body>
<FORM action="/ch9/Update" method=post>
输入要修改的数据<BR><BR>编号:<Input type=text name="id">
<BR>姓名:<Input type=text name="name">
<BR>邮箱:<Input type=text name="email">
<Input type=submit name="g" value="提交">
<c:if test="${param.id!=null}">
<c:choose>
<c:when test="${requestScope.is}">
<br>更新成功
</c:when>
<c:otherwise>
<br>更新失败
</c:otherwise>
</c:choose>
</c:if>
<br><a href="Result.jsp">返回
</FORM>
</body>麻烦了谢谢
谢谢!这个问题解决了.不过还有点疑问,比如我传过来的数据是空,我想判断是否为空然后在本页面进行提示.我在servlet中加了这段
if( request.getParameter("id")==null || request.getParameter("name")==null || request.getParameter("email")==null)
{
System.out.println("编号,姓名,邮箱都不能为空!");
request.getRequestDispatcher("update.jsp").forward(request, response);
return;
}不知道对不对?我试了一下还是会提示出错.
java.lang.NumberFormatException: For input string: ""
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:468)
java.lang.Integer.parseInt(Integer.java:497)
com.ch.control.Update.doPost(Update.java:38)还有一个问题,我做的是更新功能,jsp中输入了但提示更新失败.劳烦高手看看是jsp问题还是servlet的问题?servlet: public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html");
int id = request.getParameter("id")!=null && !request.getParameter("id").trim().equals("")?Integer.parseInt(request.getParameter("id")):0;
HttpSession session=request.getSession();
String sessionName=(String)session.getAttribute("name");
String name=request.getParameter("name");
String email=request.getParameter("email");
Message message=new Message();
MessageDAO dao=new MessageDAO();
message.setId(id);
message.setName(name);
message.setEmail(email);
try {
dao.update(message);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.getRequestDispatcher("update.jsp").forward(request, response);
}jsp:<body>
<FORM action="/ch9/Update" method=post>
输入要修改的数据<BR><BR>编号:<Input type=text name="id">
<BR>姓名:<Input type=text name="name">
<BR>邮箱:<Input type=text name="email">
<Input type=submit name="g" value="提交">
<c:if test="${param.id!=null}">
<c:choose>
<c:when test="${requestScope.is}">
<br>更新成功
</c:when>
<c:otherwise>
<br>更新失败
</c:otherwise>
</c:choose>
</c:if>
<br><a href="Result.jsp">返回
</FORM>
</body>麻烦了谢谢在服务器端提示有什么用,在js里边判断吧
Connection conn=null;
PreparedStatement statement=null;
SQLException ex=null;
try{
conn = (Connection) DriverManager.getConnection(jdbcUrl, user, psw);
statement.executeUpdate("update t_message set id=?,name=?email=?");
statement.setInt(1, message.getId());
statement.setString(2, message.getName());
statement.setString(3, message.getEmail());
}谢谢!!
像编号、姓名、邮箱页面输入,一般在页面写JS做判断!
还是类型转换做问题了,"" 不能转INT类型,把48中定义的变量打印出来!
return new NumberFormatException("For input string: \"" + s + "\"");
Connection conn=null;
PreparedStatement statement=null;
SQLException ex=null;
try{
conn = (Connection) DriverManager.getConnection(jdbcUrl, user, psw);
statement.executeUpdate("update t_message set id=?,name=?email=?");
statement.setInt(1, message.getId());
statement.setString(2, message.getName());
statement.setString(3, message.getEmail());
}谢谢!!conn 把 statement 实例出来,要不statement为空!
statement= conn.createStatement() ;
update 语句 你是想修改表中所有数据?
如果不是修改成根据ID修改
update t_message set name=?email=? where id = ?再有就是你那个48行中的try 代码块贴出来看看!
Connection conn=null;
PreparedStatement statement=null;
SQLException ex=null;
try{
conn = (Connection) DriverManager.getConnection(jdbcUrl, user, psw);
statement.executeUpdate("update t_message set id=?,name=?email=?");
statement.setInt(1, message.getId());
statement.setString(2, message.getName());
statement.setString(3, message.getEmail());
}谢谢!!conn 把 statement 实例出来,要不statement为空!
statement= conn.createStatement() ;
update 语句 你是想修改表中所有数据?
如果不是修改成根据ID修改
update t_message set name=?email=? where id = ?再有就是你那个48行中的try 代码块贴出来看看!
提示48行错误的那个文件public
class NumberFormatException extends IllegalArgumentException {
static final long serialVersionUID = -2848938806368998894L; /**
* Constructs a <code>NumberFormatException</code> with no detail message.
*/
public NumberFormatException () {
super();
} /**
* Constructs a <code>NumberFormatException</code> with the
* specified detail message.
*
* @param s the detail message.
*/
public NumberFormatException (String s) {
super (s);
} /**
* Factory method for making a <code>NumberFormatException</code>
* given the specified input which caused the error.
*
* @param s the input causing the error
*/
static NumberFormatException forInputString(String s) {
return new NumberFormatException("For input string: \"" + s + "\"");
}
}return那句是48句
请问是哪句?
int id = request.getParameter("id")!=null && !request.getParameter("id").trim().equals("")?Integer.parseInt(request.getParameter("id")):0;这句吗?
请问是哪句?
int id = request.getParameter("id")!=null && !request.getParameter("id").trim().equals("")?Integer.parseInt(request.getParameter("id")):0;这句吗?
你前台ID还是没有传值过来!text name="id" 没有填写数据!你在前台加一个js验证,如果ID为空不让提交!
请问是哪句?
int id = request.getParameter("id")!=null && !request.getParameter("id").trim().equals("")?Integer.parseInt(request.getParameter("id")):0;这句吗?
你试试把null写到判断的后面,运行一下试试就知道了 String id = null;
if(null != id || !"".equals(id)) {
System.out.println(id);
}
请问是哪句?
int id = request.getParameter("id")!=null && !request.getParameter("id").trim().equals("")?Integer.parseInt(request.getParameter("id")):0;这句吗?
你前台ID还是没有传值过来!text name="id" 没有填写数据!你在前台加一个js验证,如果ID为空不让提交!
还没学JS呢..验证就先不做了.我好像找到问题了.那个ID传不过去JSP那.
在servlet中试用了request和url后面跟参数都不成功.
JSP中是这样<%out.println(request.getAttribute("id"));%>servlet中 String action=request.getParameter("action");
int id=Integer.parseInt(request.getParameter("id"));
HttpSession session=request.getSession();
String sessionName=(String)session.getAttribute("name");
String sessionId = request.getParameter("id");//
String name=request.getParameter("name");
String email=request.getParameter("email");
Message message=new Message();
MessageDAO dao=new MessageDAO();
message.setId(id);
message.setName(name);
message.setEmail(email);
request.setAttribute("id",sessionId);//
//判断从页面提交上来的是哪一种操作
if("update".equals(action)){
request.getRequestDispatcher("/update.jsp").forward(request, response);不知道我后面加的这两句有没有用?
request.setAttribute("id",sessionId);
String sessionId = request.getParameter("id");还是直接url后面跟id?
两种都试过了就是取不到.jsp显示null.
JSP的代码 <c:forEach var="message" items="${sessionScope.messages}">
<form action="/ch9/UpdateServelet" method=post>
<tr>
<td>
${message.id}
<input type="hidden" name="id" value="${message.id}" />
</td>
<td>
<input name="name" type=text value="${message.name}" style="border:0;width=100%;height:100%"/>
</td>
<td>
<input name="email" type=text value="${message.email}" style="border:0;width=100%;height:100%"/>
</td>
<td>
<input name="action" type="submit" value="update" />
</td>
<td>
<input name="action" type="submit" value="delete" />
</td>
</tr>
</form>
</c:forEach>我做了更新了删除功能,删除的话可以取到id,但是更新那不行.