java服务端页面技术

监听器(Listener)

作用:

监听三大域对象的创建、销毁及数据的变更。

特点:

  1. 监听方法由tomcat根据监听结果来调用执行。

  2. 监听方法中的逻辑代码由我们根据需要编写。

使用步骤

  1. 创建一个类,实现监听器接口(Listener)。

  2. 实现里面的方法。

  3. 在web.xml中配置监听器。

1. ServletRequestListenter			      监听request对象的创建销毁
2. ServletRequestAttributeListener    监听request域中数据的变更
3. HttpSessionListener				         监听Session对象的创建销毁
4. HttpSessionAttributeListener	     监听Session对象中数据的变更
5. ServletContextListener			         监听ServletContext对象的创建销毁
6. ServletContextAttributeListener     监听ServletContext对象中数据的变更



<!--
    配置监听器,在服务器启动的时候就会创建监听器对象,监听器生效,一旦符合监听要求,
    tomcat底层会通过反射调用监听器中的方法完成处理
-->
<listener>
    <listener-class>com.bjsxt.listener.MyListener</listener-class>
</listener>

过滤器(Filter)

安全问题

Tomcat服务器一直是在被动的接收请求,而且Tomcat服务器收到请求后需要调用Servlet的service方法进行处理。

只要在浏览器中输入正确的url地址,不管此次请求是否合理,Tomcat服务器在接收到请求后就会直接调用对应的资源完成请求的处理。

解决方案

在浏览器发起请求,Tomcat服务器收到后,调用资源处理请求之前添加拦截。

拦截后发现请求不合理,可以拒绝访问;如果合理,可以进行相关的设置, 然后放行,继续访问请求的资源。这个其实就是过滤器(Filter)。

创建
public class CharacterFilter implements Filter {

    public CharacterFilter() {
        System.out.println("过滤器被创建!");
    }


处理化方法,执行一些初始化的操作,一般不用
@param filterConfig
@throws ServletException
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("过滤器被初始化!");

过滤器的核心方法,过滤器拦截到请求后,就是在该方法中对请求进行判断,看是否让其继续访问我们的资源。
@param servletRequest    封装的请求信息
@param servletResponse   封装的响应对象
@param filterChain       过滤器链,用来放行的
@throws IOException
@throws ServletException

@Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("开始对请求进行判断处理!");
        filterChain.doFilter(servletRequest, servletResponse);//放行


 销毁方法,用来做一些释放资源的操作,一般不用

    @Override
    public void destroy() {
        System.out.println("过滤器被销毁!");
    }

<!--配置过滤器-->
<filter>
    <filter-name>CharacterFilter</filter-name>
    <!--
        配置过滤器所在的全路径,由Tomcat在启动的时候,通过放射创建该过滤器对象
    -->
    <filter-class>com.bjsxt.filter.CharacterFilter</filter-class>
</filter>

<!--配置过滤器的拦截路径,也就是对哪些请求进行拦截-->
<filter-mapping>
    <filter-name>CharacterFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
     

过滤器链

JSP的使用

有一种特殊的文件,我们可以在它内部编写HTML代码、CSS代码、js代码还有Java代码。编写完之后,再有一个工具,将这个特殊的文件转换成Servlet,在转换好的Servlet中,之前写的Java代码还在,而HTML、css、js代码都使用writer的方式给写好。

那这个特殊的文件就是jsp文件。这个工具就是Tomcat服务器中的jsp引擎。

JSP执行原理及流程

  • JSP看似是HTML代码,看似是页面,但其实是一种后端技术。

  • 当我们第一发送请求访问jsp资源时,Tomcat服务器中的JSP加载引擎会将该JSP资源转换成一个 .java 文件(Servlet)。

  • 这个 .java文件其实就是一个Servlet,在这个Servlet中已经将写在JSP中的HTML代码以writer.print()的方式编写好了,然后将数据响应给浏览器的。

  • JSP本质上就是一个Servlet,JSP中的HTML代码就相当于我们之前在Servlet中写的writer.write()代码。

执行过程

JSP的执行过程大致可以分为三个时期:转换、编译、执行。

转换/翻译(translation):Tomcat中的JSP引擎将JSP网页转换成Servlet,得到一个.java文件。

编译(compile):通过javac命令将.java文件编译成 .class文件。

运行:运行.class字节码文件,处理请求。

  1. 浏览器发起请求访问jsp。

  2. Tomcat服务器接收到请求后调用对应的Servlet处理请求,调用JspServlet。

  3. JspServlet将请求的jsp文件转换成对应的Java文件并完成编译。

  4. 将编译后的class文件加载到内存并执行,其实就是运行一个Servlet。

  5. 最后得到结果数据响应浏览器。

jsp页面上所有的HTML相关代码全部被转化成了字符串,并在_jspService方法中,通过流的形式响应给了浏览器。<%%>中的代码也在该方法中穿插执行。

当JSP页面在执行时,JSP 引擎会做检查工作,如果发现JSP页面中有更新修改时,JSP引擎会再次转换JSP为Servlet,如果没有更新,就直接执行之前转换好的Servlet。

JSP的执行性能和Servlet相差很多。其实执行性能上的差别只在第一次的执行上。因为在第一次执行jsp时,jsp要经过转换、编译、执行三个过程。而之后再次访问jsp页面时,就直接执行第一次所产生的Servlet即可,不需要每次都转换、编译。

JSP和HTML相比的话肯定是要慢些的,他们的机制就不一样,JSP本质上是Servlet,在请求jsp时,要经过执行,其内部是通过大量的IO流形式将内容发送给页面的,IO流就是一种比较耗费资源的操作。而HTML本身资源是已经存在的,不需要服务器执行什么操作。

但JSP是动态资源,可以动态的展示数据。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值