Fork me on GitHub

JackLin的博客

当前位置:首页 > 分类

SpringBoot 10 JavaWeb 2 Android 0 源码分析 1 Thymeleaf 1 MyBatis 0 SSM 1 翻译 0 数据库设计 9 Gradle 1 Test 1 Tomcat 1 前端设计 2 ElasticSearch 2 阿里巴巴 9 Redis 3 Docker 1 实验报告 1 SpringCloud相关 1 生活 1

JSP运行原理分析

  • 2020-04-24
  • 131
  • JavaWeb
JSP的全名是 Java Server Page,它可以在传统的的HTML文件中插入Java程序段。 正是由于这个特性,在早期的JavaWeb开发中,JSP几乎是神一样的存在。 今天我们就来分析一下JSP的运行原理,以及JSP到底是什么 ### JSP是什么 先抛出结论:JSP就是一个Servlet 需要解释这个的从JSP的工作原理开发分析 ### JSP工作原理 #### 将JSP翻译成java文件 当我们在IDE中创建一个JSP文件之后第一次被访问时,Web容器就会将我们写的JSP文件翻译成为一个 .java 文件以及对应的 .class 文件 如下图所示,我在 web 目录下面创建了一个 test.jsp 文件 ![](/upload/temp.png) 第一次访问之后,我们可以看到在 `C:\Users\用户名\.IntelliJIdea2019.3\system\tomcat\工程名称\work\Catalina\localhost\工程名册\org\apache\jsp` 里面,生成了下面 2 个文件: ![](/upload/2020-4-24 213417.png) 这 2 个文件就是翻译而成的java文件。 #### 翻译成的Java文件就是Servlet **要想找到这几个类,需要导入tomcat里面的jar包 ** 点进这个生成的Java文件里面,这里类开头是这样的 ![](/upload/_202004242212101SS.png) 再来看看 HttpJspBase,重要发现这个类就是继承了 HTTPServlet ![](/upload/2020-4-24 221830.png) **而我们生成的 java 类,继承了 HttpJspBase,所以说生成的 Java 类就是Servlet** #### 生成的Java类干了什么 在这个生成的 Java 类里面,主要干了2件事 - 将 jsp 页面的各种html标签通过流的方式输出 ![](/upload/_2020042422533353SS.png) - 定义了一些内置对象,这些对象我们就可以在jsp页面中使用 ![](/upload/2020-4-24 223535.png)

Servlet3.0注解分析

  • 2020-04-22
  • 132
  • JavaWeb
在Servlet3.0出来之后,推出了几个常用的注解来帮助我们简化 web.xml 中的配置 今天我们就来总结一下这些注解的基本使用,以及和 web.xml 原来配置的对应关系。 ### 都有哪些注解 要想系统的了解都有哪些注解,最好的方法就是看源码呗。 我们知道,注解时使用在Servlet类上面的,那么我们就直接点进我们导入与Servlet相关的 jar 包里面看一看。 ![](/upload/annotation4.png) 找到 javax.servlet-api-4.0.1.jar 这个 jar 包,发现里面就有我们需要找的注解,下面我们来一一分析一下。 ### @ WebServlet - 这个注解用来标注一个 Servlet,该类需继承自 HttpServlet - 和我们在 web.xml 中配置的 <servlet> 功能一样 > Java代码 ``` @WebServlet(name = "test", urlPatterns = {"/user"}) public class UserServlet extends HttpServlet { // 逻辑代码 } ``` > web.xml配置 ``` <servlet> <servlet-name>test</servlet-name> <servlet-class>com.linkai.servlet.UserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/user</url-pattern> </servlet-mapping> ``` ### @ WebFilter - 用来配置过滤器的注解 ### @ WebListener - 用来配置监听器的注解 ### @ WebInitParam - 用来给Servlet传递参数的注解 在 @ WebServlet 中,我们看到这样一个方法 ``` WebInitParam [] initParams() default {}; ``` 显然@ WebInitParam应该是给Servlet初始化传递参数的,而且这个参数要放在@ WebServlet里面 未完,待续。。。666

test2

  • 2020-04-14
  • 123
  • JavaWeb
test2