1.乘法表.
代码实现过程
[1]搭建UI
[2]servlet代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.获取客户端提交的数据String name = request.getParameter("name");int number = Integer.parseInt(name);//2.根据name给客户端返回一个乘法表 通过response对象给客户端一个响应for (int i = 1; i <= number ; i++) {for (int j = 1; j <=i ; j++) {response.getWriter().write(i+"*"+j+"="+i*j +""); //1*1=1}response.getWriter().println();}}
2.文件上传案例
朋友圈 ,邮箱上传附件.百度云盘 360云盘.
代码实现过程:
客户端要求:
[1]要求form表单必须有一个文件上传项
[2]请求的方式必须为post 因为get提交数据有大小的限制
[3]必须加上一个enctype = multipart/form-data 否则请求体里面没有内容
服务器逻辑:
@MultipartConfig@WebServlet("/fileUploadDemo")public class FileUPloadDemo extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");//1.获取客户端上传的文件内容 根据name属性获取Part part = request.getPart("file"); //part对象里面封装了我们要上传的文件内容//2.把上传的内容 写到服务器目录下的一个文件里 首先获取fileupload真实路径String realPath = getServletContext().getRealPath("fileUpload");System.out.println("上传的路径:"+realPath);//3.获取客户端上传文件名 根据part对象获取头信息String header = part.getHeader("Content-Disposition");String[] split = header.split(";");String[] split2 = split[2].split("=");String fileName = split2[1].substring(1, split2[1].length()-1);//4.把part里面的内容写到服务器 的路径上part.write(realPath+"/"+fileName);}
3.登录案例
代码实现过程
[1]搭建服务器程序 服务器我们使用servlet模拟
[2]搭建android客户端
public void click1(View view) {new Thread(){@Overridepublic void run() {try {//1.获取用户名和密码String name = et_name.getText().toString().trim();String pwd = et_pwd.getText().toString().trim();//1.1 定义要访问服务器路径 这个路径一定是我们服务器自己的路径String path = "http://192.168.126.62:8080/Login/LongServlet?name="+name+"&pwd="+pwd+"";//2.把name 和pwd提交到服务器URL url = new URL(path);//3.获取httpurlconnection对象HttpURLConnection conn = (HttpURLConnection) url.openConnection();//4.对coon进行配置conn.setConnectTimeout(5000); //设置连接 超时时间conn.setRequestMethod("GET"); //设置请求方式//5.获取服务器返回的状态码int code = conn.getResponseCode();if (code == 200){//6获取服务器返回的数据InputStream is = conn.getInputStream(); //服务器返回的数据是什么?//7把流里面的数据读取出来 .String content = StreamUtils.readStream(is);//8.更新UIshowToast(content);}} catch (Exception e) {e.printStackTrace();}}}.start();}
[3]通过post方式提交数据
post是以请求体的形式提交数据
//点击按钮以post形式提交public void click2(View view) {new Thread(){@Overridepublic void run() {try {//1.获取用户名和密码String name = et_name.getText().toString().trim();String pwd = et_pwd.getText().toString().trim();//1.0 定义请求体 格式通过抓包抓出来String data = "name="+name+"&pwd="+pwd+"";//1.1 定义要访问服务器路径 这个路径一定是我们服务器自己的路径 ☆☆☆路径不一样String path = "http://192.168.126.62:8080/Login/LongServlet";//2.把name 和pwd提交到服务器URL url = new URL(path);//3.获取httpurlconnection对象HttpURLConnection conn = (HttpURLConnection) url.openConnection();//4.对coon进行配置conn.setConnectTimeout(5000); //设置连接 超时时间conn.setRequestMethod("POST"); //设置请求方式 ☆☆☆请求的方式不一样//4.1 数据是以请求体的形式提交 所以要先封装请求体(已经封装好 ) 把请求体的内容写给服务器conn.setDoOutput(true); //允许conn对象向服务器写数据 ☆☆☆设置dooutput方法conn.getOutputStream().write(data.getBytes()); //☆☆☆通过字节流把数据写给服务器//5.获取服务器返回的状态码int code = conn.getResponseCode();if (code == 200){//6获取服务器返回的数据InputStream is = conn.getInputStream(); //服务器返回的数据是什么?//7把流里面的数据读取出来 .String content = StreamUtils.readStream(is);//8.更新UIshowToast(content);}} catch (Exception e) {e.printStackTrace();}}}.start();}
4.httpclient实现get和post提交
代码实现过程
1.到包 compile 'com.loopj.android:android-async-http:1.4.9' 把这个包导入到build.gradle里
2.httlclient实现get提交数据
public void click1(View view) {new Thread(){@Overridepublic void run() {try {//1.获取用户名和密码String name = et_name.getText().toString().trim();String pwd = et_pwd.getText().toString().trim();//1.1 定义要访问服务器路径 这个路径一定是我们服务器自己的路径String path = "http://192.168.126.62:8080/Login/LongServlet?name="+name+"&pwd="+pwd+"";//1.2 使用httpclient方式实现数据提交 //base simple ... defaule...HttpClient client = new DefaultHttpClient();//1.3 创建get对象 用来实现get请求HttpGet get = new HttpGet(path);//1.4 实现向服务器发送请求(get post)HttpResponse response = client.execute(get);//1.5 获取响应码 响应码 是在哪里:在响应行里int code = response.getStatusLine().getStatusCode();if (code == 200){//1.6 获取服务器返回的数据InputStream is = response.getEntity().getContent();//1.7 把流转换为StringString content = StreamUtils.readStream(is);showToast(content);}} catch (Exception e) {e.printStackTrace();}}}.start();}
3.使用httpclient实现post提交
public void click2(View view) {new Thread(){@Overridepublic void run() {try {//1.获取用户名和密码String name = et_name.getText().toString().trim();String pwd = et_pwd.getText().toString().trim();//2.定义请求路径String path = "http://192.168.126.62:8080/Login/LongServlet";//3.创建httpclient实例HttpClient client = new DefaultHttpClient();//4.1创建一个httppost请求HttpPost post = new HttpPost(path);//4.2 创建parameters用来封装请求体的内容List<NameValuePair> parameters = new ArrayList<>();//4.3参数1 也和你服务器 request.getparameter参数对应BasicNameValuePair nameValuePair = new BasicNameValuePair("name",name);BasicNameValuePair pwdValuePair = new BasicNameValuePair("pwd",pwd);//4.4把nameValuePair 和 pwdValuePair 加入到集合parameters.add(nameValuePair);parameters.add(pwdValuePair);//4.5构造UrlEncodedFormEntityUrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters);//4.6 封装请求体post.setEntity(entity);HttpResponse response = client.execute(post);//5.获取服务器返回状态码int code = response.getStatusLine().getStatusCode();if (code == 200){//6 获取服务器返回的数据InputStream is = response.getEntity().getContent();// 把流转换为StringString content = StreamUtils.readStream(is);showToast(content);}} catch (Exception e) {e.printStackTrace();}}}.start();}
5.asynchttpclient
get:提交代码
AsyncHttpClient client = new AsyncHttpClient();//3.执行get请求client.get(path, new AsyncHttpResponseHandler() {//请求成功 // 登录成功@Overridepublic void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {Toast.makeText(MainActivity3.this, new String(responseBody), Toast.LENGTH_SHORT).show();}//请求失败@Overridepublic void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {}});
post:提交代码实现
2425

被折叠的 条评论
为什么被折叠?



