servlet+jsp学习笔记
2017-10-16 11:45
585 查看
servlet创建
打开eclipse,首先确保是web项目(eclispe maven项目转换成web项目),然后可以new servlet,确定后注意Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet ,参考链接http://blog.csdn.net/xulianboblog/article/details/51079534
servlet映射路径
1、完全路径匹配 以/开头 例如:/aaa2、目录匹配(通配符匹配) 以/开头 例如:/*
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");%>
相关文章推荐
- Servlet与Jsp学习笔记--3、Cookie & jsp
- JSP/Servlet Web 学习笔记 DayThree
- JavaEE学习笔记之Servlet/JSP(1)
- Jsp&Servelet 学习笔记- 为Servlet创建一个JSP类型的URL
- JSP&&SERVLET学习笔记(一):HelloServlet
- JSP&Servlet学习笔记----第3章
- JSP&&SERVLET学习笔记(五):请求参数编码处理
- Servlet与Jsp学习笔记--4、Session
- Servlets&JSP学习笔记:作为Servlet
- JSP网络编程-请求和响应-HttpServletRequest-HttpServletResponse-学习笔记
- Servlet&JSP随堂学习笔记
- 新手学习JSP+Servlet笔记一
- JSP学习笔记(三)--------Servlet相关及Servlet路径跳转
- JSP&Servlet学习笔记----第3章
- Servlet 与 Jsp核心编程 卷一 学习笔记 01
- Servlet与Jsp学习笔记--8、JSTL
- jsp&servlet学习笔记
- JSP Servlet学习笔记——使用fileupload上传文件
- Servlet和JSP学习笔记