Android——“i 分享”APP開發Day10

基本到這的話“發現”頁、“查找”頁、“發佈”頁的功能就已經完善完全了,接下來就繼續處理一下“我的”頁面剩餘還未完成的功能——修改密碼、查看我的分享、查看我的日記、查看我的收藏、查看iShare相關。在開始寫Android實現之前要先準備一下後臺文件

  • 修改密碼
  • 從info表查詢我的分享
  • 從info表查詢我的日記
  • 從收藏表focus查詢我的收藏

1. 修改密碼,通過參數獲取用戶的暱稱、舊密碼以及新密碼,將信息與user表中的查詢信息對比,返回是否修改成功

  • 打開myEclipse,和之前一樣,在已經創建的好的myServlet.data包中創建servlet文件——ChangePassword.java
  • 在web.xml下配置

<servlet>
    <servlet-name>ChangePassword</servlet-name>
    <servlet-class>myServlet.data.ChangePassword</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ChangePassword</servlet-name>
    <url-pattern>/servlet/ChangePassword</url-pattern>
  </servlet-mapping>

  • 具體代碼如下
package myServlet.data;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

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;

/**
 * Servlet implementation class ChangePassword
 */
@WebServlet("/ChangePassword")
public class ChangePassword extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ChangePassword() {
        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 oldPass = request.getParameter("oldPass");
		String newPass = request.getParameter("newPass");
		String userName = request.getParameter("username").trim();
        
		
		if(oldPass == null||oldPass.length()==0) {
			oldPass="";
		}
		
		if(newPass == null||newPass.length()==0) {
			newPass="";
		}
		
		
		if(userName == null||userName.length()==0) {
			userName = "";
		}
		
	 	Connection connection = null;
		PreparedStatement prepareStatement = null;
		PreparedStatement prepareStatement2 = null;
		ResultSet rs = null;
		ResultSet rs2 =null;
		
		String backnews="";
		boolean boo = false;
		
		boo = oldPass.length()>0&&oldPass.length()>0&&userName.length()>0;
		
		try {
			connection = JdbcUtils.getConnection();
		
			//3.獲取statement
			String sql ="select * from user where username=?";
			prepareStatement = connection.prepareStatement(sql);
			prepareStatement.setString(1, userName);
			
			if(boo) {
    			//4.執行sql
    			rs = prepareStatement.executeQuery();
    			boolean m = rs.next();
    			
    			if(m==true) {
    				//查詢成功
    				String changeSql = "update user set password=? where username=? and password=?";
    				prepareStatement2 = connection.prepareStatement(changeSql);
    				prepareStatement2.setString(1, newPass);
    				prepareStatement2.setString(2, userName);
    				prepareStatement2.setString(3, oldPass);
    				
    			    prepareStatement2.execute();
    				backnews="修改成功";
    				
    			}else {
    				backnews="沒有該用戶!";
    			}
			}else {
				backnews="密碼不能爲空!";
			}
			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);
	}

}

2.從info中查詢我的分享、我的日記、我的收藏

  • 在myServlet.data包中新建servlet並命名爲QueryAboutMe
  • 在web.xml中配置

<servlet>
    <servlet-name>QueryAboutMe</servlet-name>
    <servlet-class>myServlet.data.QueryAboutMe</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>QueryAboutMe</servlet-name>
    <url-pattern>/servlet/QueryAboutMe</url-pattern>
  </servlet-mapping>

  • 這部分通過type參數判斷是我的分享(0)、我的日記(1)、還是我的收藏(2),具體QueryAboutMe.java文件代碼如下
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 QueryAboutMe
 */
@WebServlet("/QueryAboutMe")
public class QueryAboutMe extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	CachedRowSetImpl rowSet = null;    //存儲表中全部記錄的行集對象
	int pageSize; //每頁加載數量
    int pageNum;   //第幾頁
    int totalRecord;  //總記錄數
    int totalPage;   //總頁數
    int shareType=0;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public QueryAboutMe() {
        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");	
        String type = request.getParameter("type");
        String page = request.getParameter("page");	
        String count = request.getParameter("count");
        
        if(page == null||page == "") {
			page = "1";
		}
		
		if(count == null|count == "") {
			count = "10";
		}
        
        try {
            pageNum = Integer.parseInt(page);    //第幾頁
            pageSize = Integer.parseInt(count);    //每頁加載幾條
            shareType = Integer.parseInt(type);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
        
        String condition;
        if(shareType==0) {
        	condition  = "select * from info where (username='"+userName+"') and (info_type=0 or info_type=1 or info_type=2) order by info_id desc";
        }else if(shareType ==1) {
        	condition = "select * from info where username='"+userName+"' and info_type=3 order by info_id desc";
        }else {
        	condition = "select * from info left join focus on info.info_id=focus.info_id where focus.username='"+userName+"' order by focus.info_id desc";
        }
		
	
		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);
			
			
			//按查詢頁數返回結果
			returnByPage(request,response,rowSet);
		} 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);
	}
	
	public void returnByPage(HttpServletRequest request, HttpServletResponse response,CachedRowSetImpl rowSet)throws ServletException, IOException{
		response.setContentType("text/html;charset=utf-8");
		response.setCharacterEncoding("utf-8");
			JSONArray jsonArray = new JSONArray();//存放返回的jsonOjbect數組
			JSONArray TotaljsonArray = new JSONArray();//存放返回的jsonOjbect數組
			//將rowSet的數據提取到Map
			List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
			
			//將rowSet的數據提取到Map
			List<Map<String,Object>> Totaldata = new ArrayList<Map<String,Object>>();
			try {
				PrintWriter out = response.getWriter();
				try {
					rowSet.last();    //移到隨後一行
		    		totalRecord = rowSet.getRow();
		    		
		    		/*out.println("全部記錄數"+totalRecord);  //全部的記錄數*/		    		
		    		if(totalRecord%pageSize==0){
		    			totalPage = totalRecord/pageSize;  //總頁數
		    		}else{
		    			totalPage = totalRecord/pageSize+1; 
		    		}
		    		
		    		int index = (pageNum-1)*pageSize+1;
	    			rowSet.absolute(index);   //查詢位置移動到查詢頁的起始記錄位置
	    			boolean boo = true;
	    			
	    			for(int i=1; i<=pageSize&&boo;i++){	
	    				
	    				int infoId = 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", infoId);
	    				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);
	    			
	    			Map<String,Object> map = new HashMap<String,Object>();
    				map.put("totalRecord", totalRecord);
    				map.put("RecordDetail", jsonArray);
    				Totaldata.add(map);
    				TotaljsonArray = JsonUtils.formatRsToJsonArray(Totaldata);
	    			
	    			out.println(TotaljsonArray.toString());  //返回json
	    			
				}catch(Exception e) {
	    			out.println("null"); 
				}
				
			}catch(IOException e) {
				
			}
		
	}

}

——到這的話,這個項目的後臺文件就全部編寫好了,其中包含的servlet文件可以從web.xml中看到,web.xml的代碼如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>Register</servlet-name>
    <servlet-class>myServlet.data.Register</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Register</servlet-name>
    <url-pattern>/servlet/Register</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>Login</servlet-name>
    <servlet-class>myServlet.data.Login</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Login</servlet-name>
    <url-pattern>/servlet/Login</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>QueryDiscover</servlet-name>
    <servlet-class>myServlet.data.QueryDiscover</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>QueryDiscover</servlet-name>
    <url-pattern>/servlet/QueryDiscover</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>QueryHotInfo</servlet-name>
    <servlet-class>myServlet.data.QueryHotInfo</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>QueryHotInfo</servlet-name>
    <url-pattern>/servlet/QueryHotInfo</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>QueryInfoByKey</servlet-name>
    <servlet-class>myServlet.data.QueryInfoByKey</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>QueryInfoByKey</servlet-name>
    <url-pattern>/servlet/QueryInfoByKey</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>QueryPeopleInfoByKey</servlet-name>
    <servlet-class>myServlet.data.QueryPeopleInfoByKey</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>QueryPeopleInfoByKey</servlet-name>
    <url-pattern>/servlet/QueryPeopleInfoByKey</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>AddInfo</servlet-name>
    <servlet-class>myServlet.data.AddInfo</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>AddInfo</servlet-name>
    <url-pattern>/servlet/AddInfo</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>ChangeSignature</servlet-name>
    <servlet-class>myServlet.data.ChangeSignature</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ChangeSignature</servlet-name>
    <url-pattern>/servlet/ChangeSignature</url-pattern>
  </servlet-mapping>
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
  <servlet>
    <servlet-name>ChangePassword</servlet-name>
    <servlet-class>myServlet.data.ChangePassword</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ChangePassword</servlet-name>
    <url-pattern>/servlet/ChangePassword</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>QueryAboutMe</servlet-name>
    <servlet-class>myServlet.data.QueryAboutMe</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>QueryAboutMe</servlet-name>
    <url-pattern>/servlet/QueryAboutMe</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>QueryComment</servlet-name>
    <servlet-class>myServlet.data.QueryComment</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>QueryComment</servlet-name>
    <url-pattern>/servlet/QueryComment</url-pattern>
  </servlet-mapping>
  <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>
</web-app> 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章