1、list.jsp==>新建一个Servlet,DeleteServlet.java,此时仍用doPost方法接收(点击按钮)
package org.riker.news.control;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.riker.news.data.NewsDataBean;
import org.riker.news.logic.NewsLogicBean;
public class DetailServlet extends HttpServlet {
/**
* Constructor of the object.
*/
public DetailServlet() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String newsid = request.getParameter("newsid");
NewsDataBean bean = new NewsLogicBean().detail(newsid);
if(bean!=null) {
request.setAttribute("bean",bean);
request.getRequestDispatcher("main/detail.jsp").forward(request, response);
} else {
request.getRequestDispatcher("main/error.jsp").forward(request, response);
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
// Put your code here
}
}
2、NewsLogicBean.java,写公共的,修改relevant,写deleteNews()方法
package org.riker.news.logic;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.riker.news.comm.DataSource;
import org.riker.news.data.NewsDataBean;
public class NewsLogicBean {
private int allRows;
private int curPage = 1;
private int rowPerPage = 5;
private int allPages;
public List findAll() {
List list = new ArrayList();
Statement st = null;
ResultSet rs = null;
try {
st = DataSource.getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = st.executeQuery("select newsid, newstitle, newscontent, newscount, newsdate from news order by newsdate desc");
rs.last();
this.allRows = rs.getRow();
if(this.allRows%this.rowPerPage==0) {
this.allPages = this.allRows/this.rowPerPage;
} else {
this.allPages = this.allRows/this.rowPerPage + 1;
}
if(this.curPage == 1) {
rs.beforeFirst();
} else {
rs.absolute((this.curPage - 1) * this.rowPerPage);
}
int i = 0;
while(rs.next() && i < this.rowPerPage) {
NewsDataBean bean = new NewsDataBean();
bean.setNewsid(rs.getString(1));
bean.setNewstitle(rs.getString(2));
bean.setNewscontent(rs.getString(3));
bean.setNewscount(rs.getString(4));
bean.setNewsdate(rs.getString(5));
list.add(bean);
i++;
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public int insertNews(String newsTitle, String newsContent) {
return modify("insert into news(newstitle, newscontent, newscount, newsdate) values ('"+newsTitle+"', '"+newsContent+"', 0, now()");
}
public int modify(String sql) {
int result = 0;
Statement st = null;
try {
st = DataSource.getConnection().createStatement();
result = st
.executeUpdate(sql);
} catch (Exception e) {
// TODO: handle exception
} finally {
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
public int deleteId(String newsid) {
return modify("delete from news where newsid="+newsid);
}
public int updateNews(String newsid, String newsTitle, String newsContent) {
return modify("update news set newstitle='"+newsTitle+"', newscontent='"+newsContent+"' where newsid="+newsid);
}
public NewsDataBean findById(String newsid) {
NewsDataBean bean = new NewsDataBean();
Statement st = null;
ResultSet rs = null;
try {
st = DataSource.getConnection().createStatement();
rs = st.executeQuery("select newsid, newstitle, newscontent, newscount, newsdate from news where newsid=" + newsid);
rs.last();
if(rs.next() ) {
bean.setNewsid(rs.getString(1));
bean.setNewstitle(rs.getString(2));
bean.setNewscontent(rs.getString(3));
bean.setNewscount(rs.getString(4));
bean.setNewsdate(rs.getString(5));
}
} catch (SQLException e) {
e.printStackTrace();
}
return bean;
}
public NewsDataBean detail(String newsid) {
NewsDataBean bean = new NewsDataBean();
Statement st = null;
ResultSet rs = null;
try {
st = DataSource.getConnection().createStatement();
st.executeUpdate("update news set newscount=newscount+1 where newsid="+newsid);
rs = st.executeQuery("select newsid, newstitle, newscontent, newscount, newsdate from news where newsid=" + newsid);
rs.last();
if(rs.next() ) {
bean.setNewsid(rs.getString(1));
bean.setNewstitle(rs.getString(2));
bean.setNewscontent(rs.getString(3));
bean.setNewscount(rs.getString(4));
bean.setNewsdate(rs.getString(5));
}
} catch (SQLException e) {
e.printStackTrace();
}
return bean;
}
public static void main(String[] args) {
List list = new NewsLogicBean().findAll();
System.out.println(list.size());
}
public int getCurPage() {
return curPage;
}
public void setCurPage(int curPage) {
this.curPage = curPage;
}
public int getAllPages() {
return allPages;
}
public int getAllRows() {
return allRows;
}
public int getRowPerPage() {
return rowPerPage;
}
}
3、DeleteServlet.java,去COPY过来跳转的语
句。==>查看新闻详细,中间,新建DetailServlet.java,注意此时为doGet(
地址栏的提交)==>NewsLogicBean.java写COPY上面Insert的public
NewsDataBean detail(String newsid) {}==>DetailServlet.java写COPY过来
FindByIdServlet.java中NewsDataBean bean = new NewsLogicBean
().findById(newsid),modified it==>
package org.riker.news.control;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.riker.news.data.NewsDataBean;
import org.riker.news.logic.NewsLogicBean;
public class DetailServlet extends HttpServlet {
/**
* Constructor of the object.
*/
public DetailServlet() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String newsid = request.getParameter("newsid");
NewsDataBean bean = new NewsLogicBean().detail(newsid);
if(bean!=null) {
request.setAttribute("bean",bean);
request.getRequestDispatcher("main/detail.jsp").forward(request, response);
} else {
request.getRequestDispatcher("main/error.jsp").forward(request, response);
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
// Put your code here
}
}
4、用insert.jsp复制新建detail.jsp,引
入NewsDataBean Package,写标签 <jsp:useBean id="news"
class="org.riker.news.logic.NewsLogicBean"/>,这么做没必要!!WHY?
因为DetailServlet.java中request.setAttribute("bean",bean);已经放入
bean了,所以直接NewsDataBean bean = (NewsDataBean)
request.getAttribute("bean");注意request.getAttribute("bean"),然后格
式化,更美观些,用JavaScript返回,<a href="javascript:history.back
()">返回</a>。
<%@ page contentType="text/html;charset=GBK" import="org.riker.news.data.*"%>
<html>
<head>
<title></title>
</head>
<body>
<%
NewsDataBean bean = (NewsDataBean)request.getAttribute("bean");
%>
<h2 align="center">
<%=bean.getNewstitle()%> 发布时间:<%=bean.getNewsdate()%>
</h2>
<%=bean.getNewscontent()%>点击的次数:<%=bean.getNewscount()%>
<hr>
<a href="javascript:history.back()">返回</a>
</div>
</body>
</html>