首先创建2个servlet,一个负责用户登录并将username保存在session中,另一个负责从session中获取username并返回给客户端.
LoginServlet:
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out = resp.getWriter();
req.getSession().setAttribute("username","zhangsan");
out.print("OK");
out.flush();
out.close();
}
}
QueryServlet:
public class QueryServlet extends HttpServlet{
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out = resp.getWriter();
if(req.getSession()==null){
out.print("sessioni is null");
}
else{
out.print("userid : "+req.getSession().getAttribute("username"));
}
out.flush();
out.close();
}
}
HttpURLConnection模拟用户登录的代码如下:
public class Test1 {
private String sessionId;
private String sessionUrl = "http://127.0.0.1:8088/session/servlet/login";
private String queryUrl = "http://127.0.0.1:8088/session/servlet/query";
public void login() throws Exception {
URL url = new URL(sessionUrl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
String session_value = urlConnection.getHeaderField("Set-Cookie");
sessionId = session_value.split(";")[0];
byte[] byte_result = new byte[inputStream.available()];
inputStream.read(byte_result);
String result = new String(byte_result);
System.out.println("result = " + result);
inputStream.close();
}
public void queryUser() throws Exception {
URL url = new URL(queryUrl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestProperty("Cookie", sessionId);
InputStream inputStream = urlConnection.getInputStream();
byte[] byte_result = new byte[inputStream.available()];
inputStream.read(byte_result);
String result = new String(byte_result);
System.out.println("result = " + result);
inputStream.close();
}
public static void main(String[] args) throws Exception {
Test1 test1 = new Test1();
test1.login();
test1.queryUser();
}
}