第二阶段团队冲刺第四天

书架功能已经完成

package Servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.dao;
import entity.Book;
import entity.Bookshelf;
import net.sf.json.JSONArray;


public class BookshelfServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html; charset=utf-8");
        String username=request.getParameter("username");
        dao dao =new dao();
        List<Bookshelf> bookshelfs=new ArrayList();
        bookshelfs=dao.QueryShelf(username);
        
        PrintWriter out = response.getWriter();
        JSONArray jsonArray = JSONArray.fromObject(bookshelfs);
        
        out.print(jsonArray.toString());
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

BookshelfServlet.java
package com.example.fooks;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import androidx.annotation.Nullable;

import com.example.fooks.entity.Book;
import com.example.fooks.entity.Bookshelf;
import com.example.fooks.utils.BooksAdapter;
import com.example.fooks.utils.ViewHolder;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.FileAsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;


import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;

import java.util.List;

import cz.msebera.android.httpclient.Header;


public class ReadActivity extends Activity {
    private String mUsername;
    private Button mHome;
    private Button mBook;
    private Button mList;
    private Button mPerson;
    private Button mUpload;
    private EditText editText;
    private EditText editText2;
    private ListView mListView;
    private List<Bookshelf> mShowBookShelfs  =new ArrayList<>();
    private List <ViewHolder> mViewHolder;
    private static final int FILE_SELECT_CODE = 0;
    private static String TAG="ReadActivity";
    //设置返回按钮:不应该退出程序---而是返回桌面
    //复写onKeyDown事件
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Intent home = new Intent(Intent.ACTION_MAIN);
            home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            home.addCategory(Intent.CATEGORY_HOME);
            startActivity(home);
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_read);
        //把输入框变成分割线 by:scf
        editText=this.findViewById(R.id.editText);
        editText2=this.findViewById(R.id.editText2);
        editText.setFocusableInTouchMode(false);//不可编辑
        editText.setKeyListener(null);
        editText2.setFocusableInTouchMode(false);//不可编辑
        editText2.setKeyListener(null);

        Intent intent =getIntent();
        mUsername =intent.getStringExtra("username");

        mListView=(ListView) this.findViewById(R.id.book_list) ;
        //初始化控件
        initView();

        initListener();

        initBook();

    }

    private void initBook() {
        ListView ShowBookList=(ListView)findViewById(R.id.book_list);

        //获取数据
        AsyncHttpClient client =new AsyncHttpClient();
        String url = "http://47.94.229.72:8080/Fooks/BookshelfServlet";//url组成:ip:端口 + 服务端工程名 + servlet名
        RequestParams params = new RequestParams();
        params.put("username",mUsername);
        client.post(url, params, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int i, Header[] headers, byte[] bytes) {
                if(i == 200) {
                    try {
                        String result = new String(bytes,"utf-8");
                        Log.e(TAG,"返回结果"+result);
                        try {
                            JSONArray   jsonArray = new JSONArray(result);
                            for(int j=0;j<jsonArray.length();j++){
                                JSONObject jsonObject=jsonArray.getJSONObject(j);
                                Bookshelf bookshelf =new Bookshelf();
                                bookshelf.setId(jsonObject.getInt("id"));
                                bookshelf.setBookName(jsonObject.getString("bookName"));
                                bookshelf.setUsername(jsonObject.getString("username"));
                                mShowBookShelfs.add(bookshelf);
                            }
                            BooksAdapter booksAdapter=new BooksAdapter(mShowBookShelfs,ReadActivity.this);
                            ShowBookList.setAdapter(booksAdapter);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }

                }
            }

            @Override
            public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
                Toast.makeText(getApplicationContext(),"请求失败,请检查网络",Toast.LENGTH_LONG).show();
            }
        });
    }

    private void initListener() {
        mUpload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                upLoad();

            }
        });
        mHome.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(ReadActivity.this,MainActivity.class);
                intent.putExtra("username",mUsername);
                startActivity(intent);
                ReadActivity.this.overridePendingTransition(0, 0);

            }
        });
        mList.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(ReadActivity.this,ListActivity.class);
                intent.putExtra("username",mUsername);
                startActivity(intent);
                ReadActivity.this.overridePendingTransition(0, 0);

            }
        });
        mPerson.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(ReadActivity.this,UserActivity.class);
                intent.putExtra("username",mUsername);
                startActivity(intent);
                ReadActivity.this.overridePendingTransition(0, 0);

            }
        });
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Bookshelf bookshelf=mShowBookShelfs.get(position);
                String path=Environment.getExternalStorageDirectory()+"/Fooks/Book/"+bookshelf.getBookName();
                File file =new File(path);
                if(file.exists()){
                    Intent intent =new Intent(ReadActivity.this,BookActivity.class);
                    intent.putExtra("username",mUsername);
                    intent.putExtra("bookName",bookshelf.getBookName());
                    intent.putExtra("path",path);
                    startActivity(intent);

                }else {
                    Toast.makeText(getApplicationContext(),"开始下载,请耐心等待",Toast.LENGTH_LONG).show();
                    Log.e(TAG,"book:"+bookshelf);
                    Log.e(TAG,"path:"+path);
                    DownLoadBook(bookshelf,path);
                }
            }
        });
    }
    @Override
    protected void onPause() {
        overridePendingTransition(0,0);
        super.onPause();
    }
    private void DownLoadBook(Bookshelf bookshelf,String path) {
        AsyncHttpClient client =new AsyncHttpClient();
        String url = "http://47.94.229.72:8080/Fooks/Book/";//url组成:ip:端口 + 服务端工程名 + servlet名
        try {
            String URL=URLEncoder.encode(bookshelf.getBookName(),"utf-8");
            URL=URL.replaceAll("\\+", "%20");
            Log.e(TAG,url+URL);

        client.post(url+URL, new FileAsyncHttpResponseHandler(new File(path)) {
            @Override
            public void onFailure(int i, Header[] headers, Throwable throwable, File file) {
                Toast.makeText(getApplicationContext(),"下载失败,请检查网络",Toast.LENGTH_LONG).show();
            }

            @Override
            public void onSuccess(int i, Header[] headers, File file) {

                Toast.makeText(getApplicationContext(),"下载成功,点击打开",Toast.LENGTH_LONG).show();
            }
        });

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

    }

    private void upLoad() {
        Intent intent = new Intent(ReadActivity.this,AddActivity.class);
        intent.putExtra("username",mUsername);
        startActivity(intent);

    }





    private void initView() {
        mBook=(Button) this.findViewById(R.id.btn_list);
        mHome=(Button) this.findViewById(R.id.btn_home);
        mList=(Button) this.findViewById(R.id.btn_list);

        mPerson=(Button) this.findViewById(R.id.btn_person);
        mUpload=(Button) this.findViewById(R.id.book_upload);
    }
}

ReadActivity

 

 

 

 

 

 

posted @ 2020-05-23 22:35  响当当の小队  阅读(126)  评论(0编辑  收藏  举报