Java学习笔记-Java基础27(JSP)

1.JSP:sun公司制定的服务器端动态页面技术规范,是一个以.jsp结尾的文件,包含html和少量的Java代码。jsp的执行过程是,容器将jsp转换为一个servlet,其中html会在service方法中,以out.write输出。<% Java代码 %>中的Java代码照搬到service方法中。

2.转发:一个web组件将未完成的处理交给另一个组件来完成(我搞不定,我找人)。设置转发

    1)request.getRequestDispatcher(String url).forward(request, response);

    2)转发后浏览器地址栏的信息不变

    3)转发的URL必须是同一个应用的

    4)转发时各个组件涉及的request是同一个,重定向不是,因为重定向时请求了两次

    5)转发写URL时,可用String request.getContextPath()方法获取当前应用的应用名

3.状态管理:将浏览器与web容器的多次交互作为一个整体来看,并将数据做保存。主要有cookie和session两种方式:

    1)cookie:临时保存在浏览器端的少量数据

        ---创建cookie:

            Cookie cookie = new Cookie(String name, String value);

            response.addCookie(cookie);

        ---读取cookie

            Cookie[] cookies = request.getCookies();
    String cookie.getName();

    String cookie.getValue();

        ---编码问题,cookie只能保存ASCII字符,所以需要对中文进行转换

            String URLEncoder.encode(String str, String charset)

    String URLDecoder.decode(String str, String charset)

        ---生存时间问题,默认cookie保存在浏览器内存中,浏览器关闭cookie删除

            cookie.setMaxAge(int seconds);设置cookie保存时间,若>0,保存在硬盘上,到时删除;<0,缺省值;=0,删除cookie

        ---请求地址必须是cookie所在组件的路径或其子组件的路径

    2)session:服务器为维护状态而创建的一个对象,并将sessionID以cookie的形式发送给浏览器,浏览器再次访问时会带来该sessionID,服务器依照该sessionID去寻找session

        ---获取session:HttpSession session = request.getSession();

        ---常用方法:

                String getId()

                session.setAttribute(String name, Object obj);

        session.removeAttribute(String name);

        ---session超时:默认为30分钟,超过时间session会被删除

            session.setMaxInactiveInterval(int seconds):设置session存在时间

        ---删除session:invalidate()

4.过滤器:servlet规范的一种组件,用来拦截容器的调用过程(容器会先调用过滤器的方法处理,而后才会调用servlet的service方法)。写一个过滤器的过程是:

    1)创建过滤器的类,实现Filter接口

    2)在doFilter方法里,编写处理逻辑

    3)配置web.xml


    ---当多个过滤器满足条件时,根据web.xml中<filter-mapping>的配置顺序由上而下执行

    ---过滤器的优点:可以在不修改源码的基础上,添加新的功能;实现代码复用,易于代码维护

5.servlet上下文:容器启动后,会为每一个web应用创建一个符合ServletContext接口的对象。具有唯一性和持久性(容器不管就一直存在)。可以通过HttpSession的getServletContext方法获取上下文。它的作用是:

    1)绑定数据,利用的是set/get/removeAttribute方法(三大宝,设得删。如果有相同名的attribute,获取顺序request>serssion>ServletContext)

    2)访问全局参数

        --首先在web.xml中设置

        ---利用String getInitParameter(String paramname)方法获取全局参数值


6.监听器:servlet规范中规定的一种特殊的组件,用来监听容器的事件(生命周期有关的事件:request、session、上下文产生或销毁的事件;绑定数据产生的事件)。写一个监听器的步骤是:

    1)写一个Java类,实现相应的接口

    2)在接口方法中,编写处理逻辑

    3)配置web.xml文件


7.servlet在操纵的过程中只有一个servlet对象,在多个请求并发时,会产生线程安全问题,解决方法就是利用关键字:synchronized,对可能产品线程安全问题的代码加锁

8.JSP中代码的存在方式:

    1)Java代码片段,格式:<% Java代码 %>

    2)JSP表达式,格式:<%= Java表达式 %>

    3)JSP声明,格式:<%! 声明一个变量或方法 %>

9.JSP指令:通知容器,在将JSP转为servlet时,做一些额外的处理,如导包、添加文件等。指令的格式:<%@指令名 属性=属性值%>

    1)page指令


    2)include指令:只有一个属性file,用于表示在将JSP翻译为servlet时将指定的文件内容插入到该位置

    3)tablig指令:用来引入JSP标签

10.JSP隐含对象:可以看看这个,挺全的---https://blog.csdn.net/kevin_love_it/article/details/60466260

猜你喜欢

转载自blog.csdn.net/justdi0209/article/details/80566484