JSP && Struts2

15年-16用的jsp,后来基本上没用过了,现在都2022年了,我来开倒车了...

参考JSP开发-廖雪峰

jsp出现的意义

Servlet就是一个能处理HTTP请求,发送HTTP响应的小程序,而发送响应无非就是获取PrintWriter,然后输出HTML:

PrintWriter pw = resp.getWriter();
pw.write("");
pw.write("");
pw.write("

Welcome, " + name + "!

"); pw.write(""); pw.write(""); pw.flush();

那有没有更简单的输出HTML的办法?

有!
我们可以使用JSP。
JSP是Java Server Pages的缩写,它的文件必须放到/src/main/webapp下,文件名必须以.jsp结尾,整个文件与HTML并无太大区别,但需要插入变量,或者动态输出的地方,使用特殊指令<% ... %>。

语法

整个JSP的内容实际上是一个HTML,但是稍有不同:

  • 包含在<%--和--%>之间的是JSP的注释,它们会被完全忽略;
  • 包含在<%和%>之间的是Java代码,可以编写任意Java代码;
  • 如果使用<%= xxx %>则可以快捷输出一个变量的值。

内置变量

JSP页面内置了几个变量:

  • out:表示HttpServletResponse的PrintWriter;
  • session:表示当前HttpSession对象;
  • request:表示HttpServletRequest对象。


    Hello World - JSP


    <%-- JSP Comment --%>
    

Hello World!

<% out.println("Your IP address is "); %> <%= request.getRemoteAddr() %>

指令

page指令引入Java类

<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>

include指令可以引入另一个JSP文件



    <%@ include file="header.jsp"%>
    

Index Page

<%@ include file="footer.jsp"%>

JSP Tag


JSP Tag需要正确引入taglib的jar包,并且还需要正确声明,使用起来非常复杂,对于页面开发来说,不推荐使用JSP Tag,因为我们后续会介绍更简单的模板引擎,这里我们不再介绍如何使用taglib。

Struts2

取值

struts2中可以使用的取值方式:

  • jsp内置对象取值
  • jstl标签+EL表达式取值
  • struts2标签+OGNL表达式

拦截器interceptor & 过滤器 filter

相同点:

  1. 都是一种java类
  2. 都能拦截客户端发给服务器端的请求
  3. 拦截到请求之后都可以做一些相应的处理,最后还可以把这个请求放行.
  4. 都需要实现各自相应的接口以及在相应的配置文件中配置.

不同点:

  1. 拦截器(interceptor)是struts2框架中的定义的,过滤器(filter)是web里面的对象,是J2EE标准里面定义的.

  2. 拦截器(interceptor)只会拦截器访问action的请求,过滤器(filter)能够拦截所有请求.

  3. 拦截器(interceptor)定义在struts.xml文件中,过滤器(filter)定义在web.xml文件中.

  4. 拦截器(interceptor)对象的创建、调用、销毁是struts2框架负责的,过滤器(filter)对象的创建、调用、销毁服务器负责的.

你可能感兴趣的:(JSP && Struts2)