eclipse jsp 写 js 代码提示_JavaEE学习——JSP技术深入学习

06e55e3e8ac3cb216e3facbf906092e2.png

问题:

在学习了 Servlet 之后,使用 Servlet 进行页面的展现,代码书写过于麻烦。极大的影响了开发的效率,这样写真的很痛苦,很痛苦。。。( ╯□╰ )

88ade81d635523c5e5a0172be135c9a1.png

那么有没有一种方式可以让我们像以前写网页一样来进行网页的编程工作呢?

使用JSP技术:

概念:JSP 全名为 Java Server Pages,中文名叫 java 服务器页面,其根本是一个简化的 Servlet 设计,它 是由 Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准。

长什么样子,就是Eclipse、MyEclipse、IDEA等开发工具中,以.jsp结尾的文件,就是jsp页面

5b2937d862c8d6ab250981115666280b.png

特点:

1、里面既可以写Java代码,又可以写HTML代码,CSS样式,JS代码

2、表面上看着像一个HTML页面,其实本质上还是一个Servlet

当我们从浏览器访问一个jsp页面的图示如下:

af1a67a263cded9c71a25b3a31af18fb.png

整个过程如下:这里我们以chenpeng.jsp这个jsp页面进行说明:

1、当我们在浏览器地址栏中输入了http://localhost:8848/servlet01/chenpeng .jsp 访问服务器中的jsp页面

2、这时候我们项目的web.xml文件中并没有配置chenpeng.jsp这种路径

392c78bdd7e7cc4746b6efb4152d9c0b.png

3、服务器会去我们的Tomcat的web.xml配置文件中找匹配的路径:

f51214e0a950c9af83f860d36f54a0be.png

3ace64ca577ec252d7603c2b3224f9fb.png

e562ee061c8ee63a6bcf4e678d5f9a23.png

从上面图中可以看出,Tomcat自己的web.xml配置文件中有一个JspServlet,并且映射的url-pattern为——.jsp ,

也就能匹配我们自己的chenpeng.jsp

这里补充说一下Servlet的url-pattern匹配规则,我们知道jsp本质上也是一个Servlet

dcda248a38595506c8310a69c677e1bc.png

4、服务器中的那个JspServlet(引擎),它会把我们的jsp文件,转译成.java文件,我们可以在我们自己安装的Tomcat中的work文件夹下看到:

f4ce38968a27ee3aa7b894206bf163d1.png

打开chenpeng_jsp.java文件,我们看

08f3409d0cf63a68998b6dd972bab54e.png

b187e4096960289d5ad5a40e07946f87.png

我们可以看到转译之后的这个java文件,它继承了HttpJspBase,HttpJspBase又继承了HttpServlet,所以本质上,它就是一个Servlet

5、有了这个转译之后的.java文件(其实就是一个Servlet),我们知道,Servlet是服务器会帮我们创建对象,执行service()方法,所以Java的代码服务器会帮我们执行,至于HTML,CSS,JS代码会原封不动的响应给浏览器,对了,还会加上服务器执行完的Java代码结果

515a7ee1bf98ac704236c57e44c81587.png

以上,就是jsp的访问原理的过程。


JSP页面的指令

b744b7a31d95341927cec9bac27b5d8b.png

1、局部代码块:

42c672f0ceef40d11ab3f902905bb512.png

这种代码块,在这个jsp页面被转译成Servlet以后,它会写在Servlet的service方法中,

89143ac3fd678b60c0655ffb3e9424d3.png

2、全局代码块:

73f8e13229fb7f90bdb8acf2ada9f34b.png

这种写法会写在service()方法的外部

51e8fe56d60d9818998aa11b46d96165.png

3、Java脚本段、表达式

74e0dab918788c106325e7b8b9dfab8f.png

e9dbd87478ba4e5137e9b275686815ce.png

JSP中的注释

2be726f2577f874373bc62d09c61801f.png

f3bee36dbdff2e4a6b8be6cb471cc5ea.png

当我们访问doc.jsp页面时,可以右键查看源代码:

26f81bedf9f8e9fdbcbfaa1c8b9b69db.png

JSP的动态引入和静态引入

静态引入相当于是复制进来,

ef5bb391df8905132778663672492cd6.png

943e927df843b870bc670c5475b00d09.png

动态引入相当于是参数的传递调用

234c4af80de61de6b030e9e731f9587b.png

cdbe7740f9f8a66633c543f584ef1d15.png

9ce1825953d49d68b857d71cb822cb5f.png

JSP中的forward指令学习

60f92e634fb2a5a47b4b0457adb94787.png

edd0070bec7c7220219987be0065097a.png

JSP中的9个内置对象

326096320f7c106972875a0b0385dda2.png

f7295fd6799f8798d03c682f3bd2647e.png

四大作用域:

681f0a37ed6e7604f0cb80d2a9b8051b.png

Sevlet中的请求转发和重定向的路径问题

1、使用相对路径

a6097ad1436cce2a61e83ea043cd7d2d.png

上面的请求转发,和重定向,都是用的相对路径,访问都是没有问题的:

ae9ce81270f94748a4aae3f1fafea7aa.png

它相对的是当前的Servlet,也就是说我们配置的Servlet是什么路径,它就换成如下:

http://localhost:8080/servlet01/chenpeng

* http://localhost:8080/servlet01/chenpeng.jsp

但是,这种相对路径,如果我们把web.xml中的Servlet的url-parten一换就有问题了:

c6e70c17a6d139d2997ed5f662425190.png

当我们访问http://localhost:8080/servlet01/one/chenpeng

42dc610fa7e1dfd2f08c53bc3b9bdb2f.png

基于这个问题,绝对路径来了。。。。

2、绝对路径:

请求转发和重定向的绝对路径写法总结:

重定向:

在重定向中的路径中第一个/表示服务器根目录。

示例:

resp.sendRedirect("/虚拟项目名/资源路径");//重定向jsp页面

请求转发:

在请求转发中第一个/表示项目根目录

示例:

req.getRequestDispatcher("/资源路径").forward(req, resp);//请求转发到jsp页面

重定向的绝对路径:/表示服务器的根目录

ccd13ce549f3b14584e4c28f8706a58c.png

请求转发的绝对路径:/表示当前项目的根目录

d941c0f68a3f17bf69a08f037623e436.png

推荐使用绝对路径!!!!


JSP中的路径问题

1、相对路径:相对于当前的JSP(没有basePath)

22ea59f86db2d24b59cb14b3241f8d2e.png

这种相对路径虽然没有问题,但是文件位置一换就路径错误了,不够灵活

2、相对于basePath:MyEclipse的JSP页面会有

在Myeclipse中创建的jsp页面会自动生成路径处理代码basePath,而basePath的值为当前项目根目录,并且在head标签中使用了<base href="<%=basePath%>">相当于将当前页面的资源全部默认定位为从项目根目录开始查找

532c27f6163efdffe7e4f39e2b9ca869.png

注意:

basePath方式和添加/方法只能二选一。

3、绝对路径:

在jsp中路径中的第一个/表示服务器根目录

最后,总结:

JSP 负责页面展现,Servlet 负责业务逻辑处理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值