servlet+jsp学习笔记
来源:互联网 发布:php 获取二维数组键值 编辑:程序博客网 时间:2024/05/24 15:43
servlet创建
打开eclipse,首先确保是web项目(eclispe maven项目转换成web项目),然后可以new servlet,确定后注意
Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet ,参考链接http://blog.csdn.net/xulianboblog/article/details/51079534
servlet映射路径
1、完全路径匹配 以/开头 例如:/aaa
2、目录匹配(通配符匹配) 以/开头 例如:/*
3、扩展名匹配 不以/开头 例如:*.do(以.do结尾)
优先级:完全路径匹配>目录匹配>扩展名匹配
典型错误 / *.do
servletContext
web容器在启动时,它会为每个WEB应用程序都创建一个对应的servletContext对象,它代表当前web应用。由于一个web应用中的所有servlet共享一个servletContext对象,因此servlet对象之间可以通过servletContext对象来实现通讯,servletContext对象通常也被称为context
应用:获取web应用的全局初始化参数
通过servletContext对象实现数据共享(访问页面数)
利用servletContext对象读取资源文件(不常用,任何类通过类加载器都可以读取资源文件)
servlet单例和线程安全
同步就是安全,但是效率太低
servlet是线程不安全的
jsp真身:servlet
当客户请求的jsp页面时,服务器会查看jsp对应的servlet是否存在,如何存在,那么直接调用servlet的service()方法来处理请求,如何不存在,那么服务器会先把jsp编译成java,再把java编译成class,然后调用service()方法,当这个jsp,第二次处理请求时,就直接调用真身的service()方法了。(动态的实现是通过servlet中java代码一行一行输出)
jsp的scriptlet
script是脚本的意思,let是小程序的意思,scriptlet表示脚本小程序。
jsp中java代码块就是常见的动态信息,它分为3种。 <%...%>
java代码片段<%=...%>
表达式在页面打印数据
只能出现常量、变量、以及有返回值的方法调用,而且不能出现分号<%=a;%>;是错的<%!...%>
申明全局变量,全局方法
jsp注释
语法:<%--...-->
原java//,/*...*/,
html<! --...-->
注释同样适用
HTML注释和jsp注释二者的区别:
1、<!-- -->:
tomcat不把它当注释,和其他东西一样,会发送到客户端,但浏览器不会去显示它,因为浏览器知道它是注释;
2、<%--...--%>
:tomcat在生成“真身”时,就会忽略它,因为tomcat认识它,知道它是注释,所以在“真身”中就没有它,也不会发现到客户端,也就是说,客户端永远看不懂它!
jsp内置对象
out:最为常用的方法是print(),向页面打印数据,与response.writer()基本相同
config:在页面中基本没有什么用,但如何jsp在web.xml中存在配置,而且存在初始化参数,那么可以使用config来获取config对象的 功能是:getServletContext、getServiceName()、getInitParameter(),这3个方法在jsp中都没有什么用,所以config也就没什么用,jsp也可以在web.xml中配置,但是我们没有配置的必要!
page(当前jsp真身类型):在页面中用this和page是相同的。
request:与servlet中request一样,没有区别
response:与servlet中response一样,没有区别
application:就是servletContext对象
session:就是HTTPSession对象
exception:类型是throwable,只能在错误页面中使用
pageContext:没有什么用
jsp4个域对象
pageContext范围:当前页面之内有效
request范围:当前的请求内有效
session范围:当前的会话内有效(浏览器不关闭就是一次会话)
application范围:当前这次服务器生命周期内有效
域对象的共同特点是都管理域中的属性:
他们有相同的方法:void setAttribute(String name,Object value);
Object getAttribute(String name,Object value);
void removeAttribute(String name,Object value);
服务器间的跳转
pageContext详细分析
pageContext不只是域对象,而且还可以操作所有域对象,还可以获取其他隐藏对象contextPath。
操作所有域(四个域):通过scope指定范围如:pageContext.PAGE_SCOPE;
jsp指令
<%@指令名 attr1='' attr2=''%>
,一般都会把jsp指令放到jsp文件的最上方,都不是必须。jsp3大指令:page、include、taglib,最为常用。
tomcat编译系统会根据JSP的指令来编译JSP,生成Java文件。在生成的java文件中,不存在指令信息!
page指令的pageEncoding和contentType(整个项目编码和jsp编码需要一致)
pageEncoding:当前页面编码
contentType:生成hmtl代码正文编码
request.setCharacterEncoding(“UTF-8”)
page指令的import属性
如<%@page import="java.util.*"%>
一般我们使用多个page指令导入多个包。
page指令的errorPage属性和isErrorPage属性以及内置对象exception
pageError的路径,由于是服务器端的跳转,所以绝对路径不需要加项目名,直接指定项目名称后面的路径即可。<%@page errorPage="/"%>
<%@page isErrorPage="true"%> <%=exception.getMessage()%>
还可以通过配置web.xml中的<error-page></error-page>
- jsp include指令 *
- jsp tablib指令 *:引入第三方的标签
jsp动态标签包含include:适合一个页面有很多板块,是共用的。
<jsp:include page="/xxx.jsp?name=les"></jsp:include>
xxx.jsp中得到包括页面传的参数:<%String name = request.getParameter("name");%>
- JSP/Servlet学习笔记
- Jsp+servlet学习笔记
- jsp&servlet学习笔记
- JSP Servlet学习笔记
- JSP/Servlet学习笔记
- Jsp&servlet学习笔记
- JSP&Servlet学习笔记
- jsp&servlet学习笔记
- jsp+servlet学习笔记
- JSP&Servlet学习笔记
- Servlet+JSP学习笔记
- servlet+jsp学习笔记
- JSP和SERVLET学习笔记
- JSP/Servlet 学习笔记(一)
- JSP/Servlet 学习笔记(二)
- JSP/Servlet 学习笔记(三)
- JSP/Servlet 学习笔记(四)
- JSP学习笔记02--servlet
- ubuntu 强制关机后 mysql无法启动
- node.js的常用命令
- 2017.10.16以前的学习(4)
- 以Tomcat为例介绍Servlet容器启动过程
- hibernate中delete()方法报错处理方法
- servlet+jsp学习笔记
- 上万条数据插入和去重
- javaSE _表达式的执行顺序
- Jmeter:实时获取图标之InfluxDB v1.3.6安装
- 常见DOS命令
- PopupWindow 在 Android N(7.0) 的兼容性问题
- 系统日志,时间同步
- js 计算两个时间的时间差
- JS读写cookie以及中文乱码解决