0
点赞
收藏
分享

微信扫一扫

我的第一个JSP程序

春意暖洋洋 2022-04-13 阅读 83
java

我的第一个JSP程序:

在WEB-INF目录之外创建一个index.jsp文件,然后这个文件中没有任何内容。

将上面的项目部署之后,启动服务器,打开浏览器,访问以下地址:

http://localhost:8080/jsp/index.jsp  展现在大家面前的是一个空白。

实际上访问以上的这个:index.jsp,底层执行的是:index_jsp.class 这个java程序。

这个index.jsp会被tomcat翻译生成index_jsp.java文件,然后tomcat服务器又会将index_jsp.java编译生成index_jsp.class文件

访问index.jsp,实际上执行的是index_jsp.class中的方法。

JSP实际上就是一个Servlet:

index.jsp访问的时候,会自动翻译生成index_jsp.java,会自动编译生成index_jsp.class,那么index_jsp 这就是一个类。

ndex_jsp 类继承 HttpJspBase,而HttpJspBase类继承的是HttpServlet。所以index_jsp类就是一个Servlet类。

jsp的生命周期和Servlet的生命周期完全相同。完全就是一个东西,没有任何区别,jsp和servlet一样,都是单例的。(假单例。)

jsp文件第一次访问比较慢的原因:

1.要把jsp文件翻译生成java源文件。

2.java源文件要编译生成class字节码文件。

3.然后通过class去创建servlet对象。

4.然后调用servlet对象的init方法。

5.最后调用servlet对象的service方法。

第二次就比较快的原因:直接调用单例servlet对象的service方法即可。

JSP说明:

JSP是java程序。(JSP本质还是一个Servlet)。

JSP是:JavaServer Pages的缩写。(基于Java语言实现的服务器端的页面。)

Servlet是JavaEE的13个子规范之一,那么JSP也是JavaEE的13个子规范之一。

JSP是一套规范。所有的web容器/web服务器都是遵循这套规范的,都是按照这套规范进行的“翻译”。

每一个web容器/web服务器都会内置一个JSP翻译引擎。

JSP错误调试:

对JSP进行错误调试的时候,还是要直接打开JSP文件对应的java文件,检查java代码

开发JSP的最高境界:眼前是JSP代码,但是脑袋中呈现的是java代码。

JSP和Servlet的区别在于职责不同:

Servlet的职责是什么:收集数据。(Servlet的强项是逻辑处理,业务处理,然后链接数据库,获取/收集数据。)

JSP的职责是什么:展示数据。(JSP的强项是做数据的展示)

JSP的基础语法:

在jsp文件中直接编写文字,会被翻译到servlet类的service方法的out.write("翻译到这里"),直接翻译到双引号里,被java程序当做普通字符串打印输出到浏览器。

在JSP中编写的HTML CSS JS代码,这些代码对于JSP来说只是一个普通的字符串。但是JSP把这个普通的字符串一旦输出到浏览器,浏览器就会对HTML CSS JS进行解释执行。展现一个效果。

JSP基础语法总结:

JSP中直接编写普通字符串:翻译到service方法的out.write("这里")

<% java语句; %>:翻译到service方法体内部,里面是一条一条的java语句。

  • 在这个符号当中编写的被视为java程序,被翻译到Servlet类的service方法内部。

  • 这里需要思考和注意的是,在<% %>这个符号里面写java代码的时候,要时时刻刻的记住,当前正在“方法体”当中写代码,方法体中可以写什么,不可以写什么,要心里明白。

  • 在service方法当中编写的代码是有顺序的,方法体当中的代码要遵循自上而下的顺序依次逐行执行。

  • service方法当中不能写静态代码块,不能写方法,不能定义成员变量。。。。。。

  • 在同一个JSP当中 <%%> 这个符号可以出现多个。

 <%! %>:翻译到service方法之外。

  • 在这个符号当中编写的java程序会自动翻译到service方法之外。

  • 这个语法很少用不建议使用的原因是:在service方法外面写静态变量和实例变量,都会存在线程安全问题,因为JSP就是servlet,servlet是单例的,多线程并发的环境下,这个静态变量和实例变量一旦有修改操作,必然会存在线程安全问题。

 <%= %>:翻译到service方法体内部。

  • <%= %> 注意:在=的后面编写要输出的内容。例:<%= 100+200%>

  • <%= %> 这个符号会被翻译到service方法当中了,翻译成了这个java代码: out.print()

  • 输出的内容中含有java的变量,输出的内容是一个动态的内容,不是一个死的字符串时可以使用<%=%> 。如果输出的是一个固定的字符串,直接在JSP文件中编写即可。

<%@page  %>:JSP的page指令

  • page指令,通过contentType属性用来设置响应的内容类型。

  • <%@page contentType="text/html"%>,表示响应的内容类型是text/html。

  • 在内容类型的最后面添加:charset=UTF-8 解决响应时的中文乱码问题。

  • <%@page contentType="text/html;charset=UTF-8"%>

举报

相关推荐

0 条评论