Servlet中的Session及Servlet中的中文乱码及servlet配置文件

说Session之前,先说一下:

同一用户在不同界面共享数据的方法主要有四种:

sendRedirect()转向

隐藏表单

session技术

cookie技术


a.sendRedirect:
优点:传送信息速度比较快
缺点:它只能传送字符串,而不能传送一个对象
sendRedirect("welcome?userName=shunming");
传递两个以上的值,用地址符&解决之。
传递中文要解决乱码
res.sendRedirect("welcome?userName=" + u);    
///但这种方法传递的参数会被浏览器看到,因为http协议是明文传输
///可以对传输内容进行加密,或者其他方式,如session.


接收:
String userName = req.getParameter("userName");
pw = res.getWriter();
pw.println("Welcome,Seven.userName=" + userName);

b.隐藏表单
最简单,最常见
<form action=login>
<input type=hidden name=a value= b>
</form>


c.Session

当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分配一个空间,该空间被这个浏览器独占。

它针对的是浏览器。
这个空间就是session空间,该空间中的数据默认存在时间为30min,也可修改(配置文件或者程序中)。web.xml中的session-config
session可以看作是一张表,两列。key和value。表有多少行,理论上没有限制,每一行就是session的一个属性。

1.得到session:
HttpSession hs = request.getSession(true);
2.向session添加属性
hs.setAttribute(String name,Object val);
3.从session得到某个属性
String name = hs.getAttribute(String name);
4.从session删除某个属性
hs.removeAttribute(String name);

当某个浏览器访问网站时,服务器会给浏览器分配一个唯一的session id,
并以此来区分不同的浏览器。(即客户端)
由于它占用内存,都是不得已才用服务器内存。

示例:


建立Session:
try{
String u = req.getParameter("userName");
String p = req.getParameter("passWord");
if(p.equals("123")){
HttpSession hs = req.getSession(true);
hs.setAttribute("pass", "yes");
hs.setMaxInactiveInterval(20);  
///单位是秒,如果是负值,则永远不超值。为0的话,httpsessin就没有了。
清除所有的sessionhs.setMaxInactiveInterval(0)是最安全的做法。
res.sendRedirect("welcome");
}else{
/这里写servlet的名字
res.sendRedirect("login");///
}
}catch(Exception e){
e.printStackTrace();
}

读取Session:
try {
HttpSession hs = req.getSession(true);
String val = (String) hs.getAttribute("pass");  /返回的是Object
if(val != null)
{
PrintWriter pw = res.getWriter();
pw.println(val);
pw.println(hs.getId());
}else{
res.sendRedirect("login");
}
} catch (IOException e) {
e.printStackTrace();

}


2.解决中文乱码:

public void doPost(HttpServletRequest req,HttpServletResponse res){

/servlet默认是iso-8859-1..要把它转化为gbk
res.setContentType("text/html;charset=gbk");


3.Servlet的配置文件 web.xml中:

 <servlet>
  <servlet-name>LoginDL</servlet-name>
  <servlet-class>com.login.hsp.LoginDL</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>LoginDL</servlet-name>
  <url-pattern>/LoginDL</url-pattern>
  </servlet-mapping>

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值