servlet获取id值失败
index.jsp
<body>
<table border="1">
<tr>
<th>序号</th>
<th>图书名</th>
<th>出版社</th>
<th>图书作者</th>
<th>删除</th>
<th>修改</th>
<th>详细</th>
</tr>
<c:forEach items="${all}" var="book">
<tr>
<th>${book.id}</th>
<th>${book.name}</th>
<th>${book.press}</th>
<th>${book.author}</th>
<th><a href="delete?id=${book.id }">删除</a></th>
<th><a href="update.jsp?id=${book.id }">修改</a></th>
<th><a href="one?id=${book.id }">详细</a></th>
</tr>
</c:forEach>
</table>
<form action="add.jsp" method="get">
<input type="submit" value="添加图书"/>
</form>
<form action="one" method="get">
<input type="text" name="id" />
<input type="submit" value="按照id查询书籍信息"/>
</form>
</body>
update.jsp
<body>
<form action="update" method="get">
<input type="text" hidden="hidden" value="<%String id=request.getParameter("id"); %>"/><br/>
图 书 名:
<input type="text" name="name"/><br/>
出 版 社:
<input type="text" name="press"/><br/>
图书作者:
<input type="text" name="author"/><br/>
<input type="submit" value="修改" />
</form>
</body>
@WebServlet(name = "update", urlPatterns = { "/update" })
public class UpdateBook extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UpdateBook() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
String name,press,author;
name=request.getParameter("name");
press=request.getParameter("press");
author=request.getParameter("author");
//到这程序就报错了
int id=Integer.parseInt(request.getParameter("id"));
Book book=new Book();
book.setName(name);
book.setPress(press);
book.setAuthor(author);
CheckBook cu=new CheckBook();
cu.update(book);
response.sendRedirect("all");
}
public class Book {
int id;
String name,press,author;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPress() {
return press;
}
public void setPress(String press) {
this.press = press;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
public class CheckBook {
private BookDao dao;
public CheckBook() {
super();
dao=new BookDaoImp();
}
public boolean add(Book book){
int n=dao.add(book);
if(n>0){
return true;
}else{
return false;
}
}
public boolean delete(int id){
int n=dao.delete(id);
if(n>0){
return true;
}else{
return false;
}
}
public boolean update(Book book){
int n=dao.update(book);
if(n>0){
return true;
}else{
return false;
}
}
public List<Book> findAll(){
List<Book> list=dao.selectAll();
return list;
}
public Book findById(int id){
Book user=dao.findById(id);
return user;
}
}
public interface BookDao {
//添加书籍信息
public int add(Book book);
//删除书籍信息
public int delete(int id);
//按照id修改指定书籍的图书名、出版社、图书作者
public int update(Book book);
//查询全部书籍信息
public List<Book> selectAll();
//按照id查询书籍信息
public Book findById(int id);
}
public class BookDaoImp implements BookDao {
@Override
public int add(Book book) {
SqlSession session = InitialSqlSession.getSession();
BookMapper mapper=session.getMapper(BookMapper.class);
int n=mapper.addBook(book);
session.commit();
session.close();
return n;
}
@Override
public int delete(int id) {
int n = 0;
SqlSession session = InitialSqlSession.getSession();
BookMapper mapper=session.getMapper(BookMapper.class);
n=mapper.deleteById(id);
session.commit();
session.close();
return n;
}
@Override
public int update(Book book) {
SqlSession session = InitialSqlSession.getSession();
BookMapper mapper=session.getMapper(BookMapper.class);
int n=mapper.updateById(book);
session.commit();
session.close();
return n;
}
@Override
public List<Book> selectAll() {
List<Book> list = null;
SqlSession session = InitialSqlSession.getSession();
BookMapper mapper=session.getMapper(BookMapper.class);
list = mapper.allBook();
session.close();
return list;
}
@Override
public Book findById(int id) {
SqlSession session = InitialSqlSession.getSession();
BookMapper mapper=session.getMapper(BookMapper.class);
Book user=mapper.selectById(id);
session.close();
return user;
}
}
public interface BookMapper {
//添加书籍信息
@Insert("insert into book_message(name,press,author)values(#{name},#{press},#{author})")
@Options(useGeneratedKeys=true,keyProperty="id")
public int addBook(Book book);
//删除书籍信息
@Delete("delete from book_message where id=#{id}")
public int deleteById(int id);
//按照id修改书籍信息
@Update("update book_message set name=#{name},press=#{press},author=#{author} where id=#{id}")
public int updateById(Book book);
//查询全部书籍信息
@Select("select * from book_message")
@Results({@Result(id=true,column="id",property="id"),@Result(column="name",property="name")})
public List<Book> allBook();
//按照id查询书籍信息
@Select("select * from book_message where id=#{id}")
@Results({@Result(id=true,column="id",property="id"),@Result(column="name",property="name")})
public Book selectById(int id);
}
严重: 在路径为[/MVCBook]的上下文中,servlet[update]的Servlet.service()引发异常
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at cn.edu.ccut.control.UpdateBook.doGet(UpdateBook.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at cn.edu.ccut.filter.CharSetFilter.doFilter(CharSetFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:165)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1195)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2532)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2521)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
尝试在update.jsp获取id值再通过form表单传给servlet
<input type="text" hidden="hidden"
value="<%String id=request.getParameter("id"); %>"/><br/>
<input type="text" hidden="hidden" value="${book.id}"/><br/>
但是这两种方式获取id值都失败了,但是写在input外面就可以获取到id值