Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
393 views
in Technique[技术] by (71.8m points)

如何在点击超链接的完成跳转的同时能传值给servlet

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/>
        图&nbsp;&nbsp;书&nbsp;&nbsp;名:
        <input type="text" name="name"/><br/>
        出&nbsp;&nbsp;版&nbsp;&nbsp;社:
        <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值


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...