package secondWeb;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class one extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
// 获取前台单个元素的值
String userName = req.getParameter("userName");
String pwd = req.getParameter("pwd");
String[] loves = req.getParameterValues("love");// 获取一组具有相同名字的元素的值
out.println("从前台获取的数据如下:" + "<br/>");
out.println("userName:" + userName + "<br/>");
out.println("pwd:" + pwd + "<br/>");
out.println("love:");
if (loves != null) {
for (String s : loves) {
out.print(s + "\t");
}
}
/*
* cookie和session的区别 1、存放位置不同。cookie存放在客户端上;session的内容存放在服务器上
* 2、session对cookie具有依赖性。cookie当中会存放一个session的id
* 3、大小不同。cookie的大小固定,每条限制在4K,每个浏览器支持的cookie数量大约在120-140之间;
* session可存储大量数据,但会占用服务器资源
* 4、安全性不同。cookie的内容是浏览器可见的,安全性较低;session内容由于在服务器上,安全性较高
*/
HttpSession se = req.getSession();// 创建一个HttpSession
se.setMaxInactiveInterval(3600);// 设置session在服务器的过期时间为3600秒
se.setAttribute("pwd", pwd);// 为session设置一个键值对
Cookie cookie = new Cookie("name", userName);// 创建一个cookie,它里面的存放了一个键值对
cookie.setMaxAge(3600); // 设置cookie的过期时间为3600秒
resp.addCookie(cookie);// 将新创建的cookie添加到文件中
/*当浏览器关闭时,原来保存sessionid的cookie也将被消除。当我们重新打开浏览器时,虽然服务器仍然有session的记录,
* 但实际会新打开一个session,为了获取原来session里面的值,可以将第一次的sessionid保存下来*/
Cookie seCookie = new Cookie("JSESSIONID", se.getId());// 创建一个session的cookie,存放了session的id
cookie.setMaxAge(3600);
resp.addCookie(seCookie);
/*
* 请求转发和响应重定向的区别: 1、完成的对象不同。转发是在服务器端进行工作;重定向是由客户端浏览器来完成
* 2、范围不同。转发只能在服务器当前工程内部进行;重定向的目的页面可以是服务器当前工程内部,也可以是外部页面
* 3、最终的地址栏不同。转发仅是将业务交由其它页面处理,然后再返回给发送者,地址栏不会发生变化;重定向是整个页面都跳转到一个新的路径下
* 4、请求的次数不同。转发仅发生一次请求,请求的信息不会变;重定向将发生至少两次请求,第一次请求的信息在后面将不会再存在
**/
// resp.sendRedirect("second");//重定向到url为second的路径上
// req.getRequestDispatcher("second").forward(req,
// resp);//转发到url为second的路径上
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("进入了post方法");
/*
* get和post方法的区别 1、提交的数据类型。get仅能提交文本;post可以提交文本和二进制文本
* 2、提交的数据长度。get不能超过255个字符;post理论上没有限制
* 3、提交数据的可见性。数据在get中作为URL地址的一部分显示在浏览器地址栏,用户可见,安全性低;post的数据作为消息体,用户不可见,
* 安全性高 4、提交数据缓存。get方法会缓存在浏览器URL的历史状态中;post方法不会被浏览器缓存
*/
doGet(req, resp);// 使用post的时候,将具体的逻辑操作放在doGet方法中
}
}