主頁上4個Tab的功能基本就已經完善了,接下來準備實現跳轉詳情頁的功能。在此之前,明確一下詳情頁將會實現的功能,優先處理後臺代碼
- 根據內容ID查找到與內容相關的所有信息——內容簡述、內容詳情、內容作者、點贊數、內容類型
- 點贊——點擊後,點贊數加一
- 用戶是否已經收藏該內容——通過傳過來的用戶暱稱和文章內容ID判斷用戶是否已經收藏該內容
- 取消收藏——從收藏表中將對應的收藏行刪除
- 添加到我的收藏——將用戶和內容信息插入到收藏表中
- 評論功能——用戶可以評論
- 刪除內容——當作者就是用戶時,可以刪除內容,且在刪除文章時對應刪除收藏表的對應行以及評論表對應的內容
1.明確上述幾個後臺處理邏輯之後,首先要在數據庫ishare中新建一張收藏表——focus,還有1張評論表——comment
- 和之前的用戶表、內容表一樣,在數據庫ishare中新建一張表,命名爲focus具體的表結構如下:
- focus_id爲int類型,自增;username對應收藏的用戶;info_id對應收藏的內容
- 在ishare中新建一張表,命名爲comment,具體表結構設計如下:
- comment_id是int類型,自增;comment_user是評論者;comment_info是評論文章的id;comment_detail是評論的具體內容
2. 建好表之後就開始處理通過Id查找內容的servlet文件QueryInfoById.java
- 和之前新建servlet一樣,在myServlet.data包下新建servlet命名爲QueryInfoById
- 在web.xml中添加配置:
<servlet>
<servlet-name>QueryInfoById</servlet-name>
<servlet-class>myServlet.data.QueryInfoById</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>QueryInfoById</servlet-name>
<url-pattern>/servlet/QueryInfoById</url-pattern>
</servlet-mapping>
- 具體實現也是和之前查詢類似,將數據庫返回的內容封裝成JsonArray返回,具體代碼如下
package myServlet.data;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.utils.JdbcUtils;
import org.utils.JsonUtils;
import com.sun.rowset.CachedRowSetImpl;
import net.sf.json.JSONArray;
/**
* Servlet implementation class QueryInfoById
*/
@WebServlet("/QueryInfoById")
public class QueryInfoById extends HttpServlet {
private static final long serialVersionUID = 1L;
CachedRowSetImpl rowSet = null; //存儲表中全部記錄的行集對象
int pageSize=10; //每頁加載數量
int pageNum=1; //第幾頁
int totalRecord; //總記錄數
/**
* @see HttpServlet#HttpServlet()
*/
public QueryInfoById() {
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
// TODO Auto-generated method stub
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String infoId = request.getParameter("infoId");
if(infoId == null||infoId.length()==0) {
return;
}
String condition ="select * from info where info_id="+infoId; //按id查找
Connection connection = null;
Statement sql = null;
ResultSet rs = null;
try {
connection = JdbcUtils.getConnection();
sql = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = sql.executeQuery(condition);
rowSet = new CachedRowSetImpl(); //創建行集對象
rowSet.populate(rs);
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
//將rowSet的數據提取到Map
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
try {
rowSet.last(); //移到隨後一行
totalRecord = rowSet.getRow();
int index = (pageNum-1)*pageSize+1;
rowSet.absolute(index); //查詢位置移動到查詢頁的起始記錄位置
boolean boo = true;
for(int i=1; i<=totalRecord&&boo;i++){
int id = rowSet.getInt(1); //內容ID
String infoTitle = rowSet.getString(2); //內容標題
String infoDescribe = rowSet.getString(3); //內容簡述
String infoDetail = rowSet.getString("info_detail"); //內容詳情
String type = rowSet.getString(5); //類型:0表示日記,1表示趣事
String support = rowSet.getString(6); //點贊數
String infoAuthor = rowSet.getString(7); //作者
Map<String,Object> map = new HashMap<String,Object>();
map.put("infoId", id);
map.put("infoTitle", infoTitle);
map.put("infoDescribe", infoDescribe);
map.put("infoDetail", infoDetail);
map.put("infoType", type);
map.put("infoSupport", support);
map.put("infoAuthor", infoAuthor);
data.add(map);
boo = rowSet.next();
}
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}catch(Exception e) {
out.println("null");
}
} catch (Exception e) {
out.println(condition+"異常:"+e.toString());
e.printStackTrace();
}finally {
//5.釋放資源 connection prepareStatement
JdbcUtils.statementClose(connection, sql, rs);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
3. 實現點贊,對應servlet文件AddSupport.java
- 一樣在myServlet.data包下新建servlet文件,命名爲AddSupport
- 在web.xml中配置:
<servlet>
<servlet-name>AddSupport</servlet-name>
<servlet-class>myServlet.data.AddSupport</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddSupport</servlet-name>
<url-pattern>/servlet/AddSupport</url-pattern>
</servlet-mapping>
- AddSupport.java通過參數獲取到info_id,查詢到info表中的對應點贊數,然後在當前點贊數的基礎上加一之後更新到info表對應的內容點贊數中,具體代碼如下:
package myServlet.data;
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.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.utils.JdbcUtils;
import org.utils.JsonUtils;
import net.sf.json.JSONArray;
/**
* Servlet implementation class AddSupport
*/
@WebServlet("/AddSupport")
public class AddSupport extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AddSupport() {
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.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String infoId = request.getParameter("InfoId").trim();
/* String supportNum = request.getParameter("supportNum").trim();*/
if(infoId == null) {
infoId = "";
}
Connection connection = null;
PreparedStatement prepareStatement = null;
PreparedStatement prepareStatement2 = null;
ResultSet rs = null;
ResultSet rs2 =null;
String backnews="";
boolean boo = false;
boo = infoId.length()>0;
try {
connection = JdbcUtils.getConnection();
//3.獲取statement
String sql ="select * from info where info_id=?";
prepareStatement = connection.prepareStatement(sql);
prepareStatement.setString(1, infoId);
if(boo) {
//4.執行sql
rs = prepareStatement.executeQuery();
boolean m = rs.next();
int support = rs.getInt(6);
support = support+1;
if(m==true) {
//查詢成功
String changeSql = "update info set info_support=? where info_id=?";
prepareStatement2 = connection.prepareStatement(changeSql);
prepareStatement2.setInt(1, support);
prepareStatement2.setString(2, infoId);
prepareStatement2.execute();
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("addOk", true);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}else {
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("addOk", false);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}
}else {
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("addOk", false);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}
out.print(backnews.toString());
} catch (Exception e) {
backnews="修改失敗"+e.toString();
out.print(backnews);
e.printStackTrace();
}finally {
//5.釋放資源 connection prepareStatement
JdbcUtils.close(connection, prepareStatement, rs);
JdbcUtils.close(connection, prepareStatement2, rs2);
}
out.flush();
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
4.判斷用戶是否已經收藏內容——IfAddFocus.java
- 在myServlet.java包下新建servlet命名爲IfAddFocus
- 在web.xml中配置:
<servlet>
<servlet-name>IfAddFocus</servlet-name>
<servlet-class>myServlet.data.IfAddFocus</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IfAddFocus</servlet-name>
<url-pattern>/servlet/IfAddFocus</url-pattern>
</servlet-mapping>
- 通過參數獲取到用戶名和內容id,根據用戶名和id查詢focu表是否已經存在該信息,若是則返回true,具體代碼如下:
package myServlet.data;
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.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.utils.JdbcUtils;
import org.utils.JsonUtils;
import net.sf.json.JSONArray;
/**
* Servlet implementation class IfAddlike
*/
@WebServlet("/IfAddlike")
public class IfAddFocus extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public IfAddFocus() {
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.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username").trim();
String infoId = request.getParameter("infoId").trim();
int focusId = 0;
if(username == null) {
username = "";
}
if(infoId == null) {
infoId = "";
}
Connection connection = null;
PreparedStatement prepareStatement = null;
ResultSet rs = null;
boolean boo = false;
boo = username.length()>0&&infoId.length()>0;
try {
connection = JdbcUtils.getConnection();
//3.獲取statement
//String sql ="insert into user(logname,password,phone,address,realname) value(?,?,?,?,?) ";
String sql ="select * from focus where username=? and info_id=?";
prepareStatement = connection.prepareStatement(sql);
prepareStatement.setString(1, username);
prepareStatement.setString(2, infoId);
if(boo) {
//4.執行sql
boolean m =false;
rs = prepareStatement.executeQuery();
while(rs.next()) {
m = true;
focusId = rs.getInt(1);
}
if(m==true) {
success(request,response,focusId);
}else {
fail(request,response);
}
}else {
fail(request,response);
}
} catch (Exception e) {
e.printStackTrace();
fail(request,response);
}finally {
//5.釋放資源 connection prepareStatement
JdbcUtils.close(connection, prepareStatement, rs);
}
out.flush();
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
public void success(HttpServletRequest request, HttpServletResponse response, int focusId) {
try {
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
PrintWriter out = response.getWriter();
Map<String,Object> map = new HashMap<String,Object>();
map.put("isFocus", true);
map.put("focusId", focusId);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}catch(IOException e) {
e.printStackTrace();
}
}
public void fail(HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/html;charset=utf-8");
try {
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
PrintWriter out = response.getWriter();
Map<String,Object> map = new HashMap<String,Object>();
map.put("isFocus", false);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}catch(IOException e) {
e.printStackTrace();
}
}
}
5.取消收藏——RemoveFocus.java
- 在myServlet.data包下創建servlet並命名爲RemoveFocus
- 在web.xml添加配置
<servlet>
<servlet-name>RemoveFocus</servlet-name>
<servlet-class>myServlet.data.RemoveFocus</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RemoveFocus</servlet-name>
<url-pattern>/servlet/RemoveFocus</url-pattern>
</servlet-mapping>
- 通過獲取到用戶名和內容Id,將focus表中對應的收藏信息刪除,具體代碼如下:
package myServlet.data;
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.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.utils.JdbcUtils;
import org.utils.JsonUtils;
import net.sf.json.JSONArray;
/**
* Servlet implementation class RemoveFocus
*/
@WebServlet("/RemoveFocus")
public class RemoveFocus extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RemoveFocus() {
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.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String focusId = request.getParameter("focusId").trim();
if(focusId == null||focusId == "") {
return;
}
Connection connection = null;
PreparedStatement prepareStatement = null;
ResultSet rs = null;
boolean boo = false;
boo = focusId.length()>0;
try {
connection = JdbcUtils.getConnection();
//3.獲取statement
String sql ="delete from focus where focus_id=?";
prepareStatement = connection.prepareStatement(sql);
prepareStatement.setString(1, focusId);
if(boo) {
//4.執行sql
prepareStatement.execute();
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("removeOk", true);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}else {
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("removeOk", false);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}
} catch (Exception e) {
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("removeOk", false);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}finally {
//5.釋放資源 connection prepareStatement
JdbcUtils.close(connection, prepareStatement, rs);
}
out.flush();
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
6.添加到我的收藏
- 在myServlet.data下新建文件AddFocus.java
- 在web.xml下添加配置:
<servlet>
<servlet-name>AddFocus</servlet-name>
<servlet-class>myServlet.data.AddFocus</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddFocus</servlet-name>
<url-pattern>/servlet/AddFocus</url-pattern>
</servlet-mapping>
- 通過參數獲取到用戶名和內容ID,將信息插入到收藏表focus中,具體代碼如下:
package myServlet.data;
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.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.utils.JdbcUtils;
import org.utils.JsonUtils;
import net.sf.json.JSONArray;
/**
* Servlet implementation class AddFocus
*/
@WebServlet("/AddFocus")
public class AddFocus extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AddFocus() {
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.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String infoId = request.getParameter("InfoId").trim();
String username = request.getParameter("username").trim();
if(infoId == null||infoId == "") {
return;
}
if(username == null||username == "") {
return;
}
Connection connection = null;
PreparedStatement prepareStatement = null;
PreparedStatement prepareStatement2 = null;
ResultSet rs = null;
ResultSet rs2 =null;
String backnews="";
boolean boo = false;
boo = infoId.length()>0;
try {
connection = JdbcUtils.getConnection();
//3.獲取statement
String sql ="select * from focus where info_id=? and username=?";
prepareStatement = connection.prepareStatement(sql);
prepareStatement.setString(1, infoId);
prepareStatement.setString(2, username);
if(boo) {
//4.執行sql
rs = prepareStatement.executeQuery();
boolean m = rs.next();
if(m!=true) {
String changeSql = "INSERT INTO focus VALUES(?,?,?)";
prepareStatement2 = connection.prepareStatement(changeSql);
prepareStatement2.setInt(1, 0);
prepareStatement2.setString(2, username);
prepareStatement2.setString(3, infoId);
prepareStatement2.execute();
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("addOk", true);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}else {
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("addOk", false);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}
}else {
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("addOk", false);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}
out.print(backnews.toString());
} catch (Exception e) {
backnews="修改失敗"+e.toString();
out.print(backnews);
e.printStackTrace();
}finally {
//5.釋放資源 connection prepareStatement
JdbcUtils.close(connection, prepareStatement, rs);
JdbcUtils.close(connection, prepareStatement2, rs2);
}
out.flush();
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
7.評論內容
- 在myServlet.data下新建servlet並命名爲AddComment
- 在web.xml中添加配置
<servlet>
<servlet-name>AddComment</servlet-name>
<servlet-class>myServlet.data.AddComment</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddComment</servlet-name>
<url-pattern>/servlet/AddComment</url-pattern>
</servlet-mapping>
- 同參數獲取到用戶的ID、內容ID、評論的內容插入到評論表中,具體代碼如下
package myServlet.data;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.utils.JdbcUtils;
import org.utils.JsonUtils;
import net.sf.json.JSONArray;
/**
* Servlet implementation class AddComment
*/
@WebServlet("/AddComment")
public class AddComment extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AddComment() {
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.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
Integer commentId =0; //內容ID,默認設置爲0
String infoIdStr = request.getParameter("infoId"); //內容標題
String commentUser =request.getParameter("commentUser"); //內容簡述
String commentDetail = request.getParameter("commentDetail"); //內容詳情
if(infoIdStr == null||infoIdStr == "") {
infoIdStr = "";
}
if(commentUser == null||commentUser == "") {
commentUser = "";
}
if(commentDetail == null||commentDetail == "") {
commentDetail = "";
}
Boolean m = infoIdStr.length()>0&&commentUser.length()>0&&commentDetail.length()>0;
int infoId = 0;
try {
infoId = Integer.parseInt(infoIdStr); //內容類型
} catch (NumberFormatException e) {
e.printStackTrace();
}
Connection connection = null;
PreparedStatement prepareStatement = null;
try {
connection = JdbcUtils.getConnection();
//3.獲取statement
String sql ="INSERT INTO comment VALUES(?,?,?,?)";
prepareStatement = connection.prepareStatement(sql);
if(m) {
prepareStatement.setInt(1, commentId); //自增
prepareStatement.setString(2, commentUser);
prepareStatement.setInt(3, infoId);
prepareStatement.setString(4, commentDetail);
//4.執行sql
prepareStatement.execute();
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("addOk", true);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}else {
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("addOk", false);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}
} catch (Exception e) {
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("addOk", false);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}finally {
//5.釋放資源 connection prepareStatement
JdbcUtils.close(connection, prepareStatement, null);
}
out.flush();
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
8.刪除分享內容
- 在myServlet.data下新建servlet並命名爲DeleteInfo
- 在web.xml中添加配置:
<servlet>
<servlet-name>DeleteInfo</servlet-name>
<servlet-class>myServlet.data.DeleteInfo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DeleteInfo</servlet-name>
<url-pattern>/servlet/DeleteInfo</url-pattern>
</servlet-mapping>
- 通過參數獲取到內容ID,對應刪除收藏表中的相關內容,然後再刪除info表中的內容,具體代碼如下:
package myServlet.data;
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.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.utils.JdbcUtils;
import org.utils.JsonUtils;
import net.sf.json.JSONArray;
/**
* Servlet implementation class DeleteInfo
*/
@WebServlet("/DeleteInfo")
public class DeleteInfo extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public DeleteInfo() {
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.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String infoId = request.getParameter("infoId").trim();
if(infoId == null||infoId == "") {
return;
}
Connection connection = null;
PreparedStatement prepareStatement = null;
ResultSet rs = null;
PreparedStatement prepareStatement3 = null;
ResultSet rs3 =null;
String backnews="";
boolean boo = false;
boo = infoId.length()>0;
try {
connection = JdbcUtils.getConnection();
//3.獲取statement
String sql ="delete from focus where info_id=?";
prepareStatement = connection.prepareStatement(sql);
prepareStatement.setString(1, infoId);
if(boo) {
//4.執行sql
prepareStatement.execute();
String changeSql = "delete from info where info_id=?";
prepareStatement3 = connection.prepareStatement(changeSql);
prepareStatement3.setString(1, infoId);
prepareStatement3.execute();
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("deleteOk", true);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}else {
JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("deleteOk", false);
data.add(map);
jsonArray = JsonUtils.formatRsToJsonArray(data);
out.println(jsonArray.toString()); //返回json
}
out.print(backnews.toString());
} catch (Exception e) {
backnews="修改失敗"+e.toString();
out.print(backnews);
e.printStackTrace();
}finally {
//5.釋放資源 connection prepareStatement
JdbcUtils.close(connection, prepareStatement, rs);
JdbcUtils.close(connection, prepareStatement2, rs2);
JdbcUtils.close(connection, prepareStatement3, rs3);
}
out.flush();
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}