服务端代码:
package com.example.demo.servlet;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
@RestController
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID=1L;
@RequestMapping(value = "/doGet",method = RequestMethod.GET)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// super.doGet(req, resp);
String name=request.getParameter("name");
//request.getParameter得到String是按照美国人的iso8859-1
// if(name!=null){
// // name=new String(name.getBytes("iso8859-1"),"UTF-8");
// // name=new String(name.getBytes("iso8859-1"),"UTF-8");
// }
String password=request.getParameter("password");
System.out.println("姓名:"+name+" ,密码:"+password);
if("admin".equals(name)&&"123456".equals(password)){
response.getOutputStream().write("login success!".getBytes());
}else {
response.getOutputStream().write("login failed!".getBytes());
}
//解析JSON格式数组
// analysisJSONArray(name);
// try {
// analysisJSON(name);
// } catch (JSONException e) {
// e.printStackTrace();
// }
}
@RequestMapping(value = "/doPost",method = RequestMethod.POST)
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name=request.getParameter("username");
String password=request.getParameter("password");
System.out.println("姓名:"+name+" ,密码:"+password);
if("admin".equals(name)&&"123456".equals(password)){
response.getOutputStream().write("login success!".getBytes());
}else {
response.getOutputStream().write("login failed!".getBytes());
}
}
}
客户端代码:
public static String requestByPost(String url,String parm) throws IOException {
// Post请求的url,与get不同的是不需要带参数
URL postUrl = new URL(url);
// 打开连接
HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection();
// 设置是否向connection输出,因为这个是post请求,参数要放在
// http正文内,因此需要设为true
connection.setDoOutput(true);
// Read from the connection. Default is true.
connection.setDoInput(true);
// 默认是 GET方式
connection.setRequestMethod("POST");
// Post 请求不能使用缓存
connection.setUseCaches(false);
connection.setInstanceFollowRedirects(true);
// 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
// 意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode
// 进行编码
connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
// 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
// 要注意的是connection.getOutputStream会隐含的进行connect。
connection.connect();
DataOutputStream out = new DataOutputStream(connection
.getOutputStream());
// The URL-encoded contend
// 正文,正文内容其实跟get的URL中 '? '后的参数字符串一致
//设置参数
if(parm!=null&&parm!="") {
String content = "username=" + URLEncoder.encode("admin", "UTF-8");
content +="&password="+URLEncoder.encode("123456", "UTF-8");
// DataOutputStream.writeBytes将字符串中的16位的unicode字符以8位的字符形式写到流里面
out.writeBytes(content);
out.flush();
out.close();
}
//使用缓冲读取返回的数据
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
String result="";
while ((line = reader.readLine()) != null){
result=result+line;
System.out.println(line);
}
reader.close();
connection.disconnect();
return result;
}
使用客户端访问服务端数据:
public static void main(String[] args) {
try {
String result= requestByPost("http://127.0.0.1:8082/doPost","admin");
System.out.println("返回的结果:"+result);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}