servlet中的核心对象

通过前面的了解,我们发servlet所做的核心的事情
1、获取参数
2、回传响应数据,跳转页面

对于我们的程序来说,目前我们可以吧程序划分为几个层:
视图层:html 展示页面和数据的
控制层、业务调度层:Servlet
逻辑层:dao 复杂完成具体功能。

实际上servlet的在项目当中发挥的功能已经全部完毕。剩下就是一些技术问题。

1、乱码问题:
乱码 产生的原因是由于页面传递数据给服务器对数据进行编码的,这个编码格式是由客户端指定(iso-8859-1英文、gbk、gb2312、UTF- 8),同时服务器应该以该编码进行解析,
第一种解决方案就是要保证浏览器和服务器的编码一致,注意此种方法只针对变淡。
post提交数据解决方法就是:

    //处理乱码  F5进入方法   F6 下一步
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
get处理乱码:无论浏览器设置什么编码,他都是以iso-8859-1提交数据,如果页面还是以UTF-8来获取,那得到就是乱码
  String account = request.getParameter("account");
    String pwd = request.getParameter("pwd");

    byte data[] = account.getBytes("iso-8859-1");
    String account2 = new String(data,"UTF-8");

目前为止:
request、response、application
在我们编写代码的时候需要满足一个 “高类聚,低耦合” 的概念, 未来增加,修改、删除功能的时候,尽量不修改代码
所谓的高类聚是指的我们的任意一个java的类尽量不依赖其他类去完成一个功能,这样的话,当我们修改某个功能模块的时候,不会影响其他模块的功能结构。低耦合我们项目的模块与模块之间尽量不要关联太多。本质的意思就是我们在设计项目的功能模块时,我们需要考虑到未来功能的增加,修改、删除只影响一个功能模块而不影响其他供模块。
application是ServletContext类型的对象。这个对象是全局使用。所有的servlet都可以访问对象,当服务器启动的时候,该对象就创建了。这个对象和hashMap一样,是可以存储数据的一个零时区域,以建-值对进行存储,这种对象在我们servlet里面叫域对象,专门用于存储数据的。

request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");


    String account = request.getParameter("account");

    //吧数据存入到application
    ServletContext application = this.getServletContext();
    application.setAttribute("user", account);

会话技术:所谓的会话技术就是服务器和客户端通过这个过程的一个概念。基于这个会话的过程衍生出来两个对象, session, cookie
session就是服务器为当前访问的客户端(浏览器) 生成的一个存储临时数据的区域, 这个区域只能当前链接的客户端访问,其他客户端是无法访问。

session和application一样也是域对象

//吧数据存入到application
        ServletContext application = this.getServletContext();
        application.setAttribute("user", account);


        //吧数据存入session
        HttpSession session = request.getSession();
        session.setAttribute("user", "baijuan");
        ServletContext application = this.getServletContext();
        String account = (String) application.getAttribute("user");

        HttpSession session = request.getSession();
        String name = (String) session.getAttribute("user");

session是由服务器创建,从浏览器打开访问到浏览器关闭。这是理论的说话,实际上session的时间

aplication 从服务器启动到服务器关闭, 存储数据是整个项目都可以方法
session是从浏览器打开到浏览器关闭,存储数据是当前浏览器才能访问。

cookie用法

创建cookie
//创建对象
Cookie c = new Cookie(“userName”, account);
//设置超时时间
c.setMaxAge(60*60*24);
//添加到响应数据包,响应给客户端
response.addCookie(c);

读取cookie
Cookie cookies[] = request.getCookies();
//读取到、 没读取到
if(cookies != null){
for(int i=0;i

猜你喜欢

转载自blog.csdn.net/sky274548769/article/details/80846205