最近开始学习servlet和jsp,把每天学到的东西记录一下,就当做个笔记。
1. GET方式提交数据不能超过256个字符。过大的提交数据量需要使用POST方式。
2. Java web的目录结构:
Web应用根目录>WEB-INF >web.xml(web程序的配置文件)
>classes(存放类文件)
>lib(存放jar包)
3.配置<servlet>
<servlet>
<servlet-name>servlet name</servlet-name>
<servlet-class>类名</servlet-class>
<init-param>
<param-name>初始化参数名称</param-name>
<param-value>初始化参数值</param-value>
</init-param>
初始化参数可以通过调用ServletConfig类的getInitParameter(String name)方法获得一个String类型的返回值。也可以使用getInitParameterNames()方法得到一个Enumeration类型的返回值,然后遍历取出。
</servlet>
4. 配置<servlet-mapping>
<servlet-mapping>
<servlet-name>和配置servlet中的name相同</servlet-name>
可以有多个<url-pattern></url-pattern>标签。
<url-pattern>/相对路径</url-pattern>
相对路径中的第一个“/”代表每个web程序根目录。
</servlet-mapping>
5. servlet生命周期
最重要的一点:在整个服务器运行过程中只有一个servlet对象。
<load-on-startup>1</load-on-startup>服务器启动时初始化。
<load-on-startup>0</load-on-startup>第一次请求servlet时进行初始化。
- new一个servlet对象。
- 调用init()方法。整个过程中只调用一次。
- 服务器启动多个线程调用service()方法响应客户端请求,调用doGet()和doPost()方法。
- 调用destroy()方法。也只调用一次。
6. servlet转向
1. RequestDispatcher rd = request.getRequestDispatcher(“/相对路径”);
rd.forward(request,response);
forward()方法只能跳转到同一个web程序目录下的页面。
2. response.sendRedirect(“地址”);
sendRedirect()方法可以跳转到任意页面。
7. servlet存在线程安全问题。
8. jsp是一种servlet,但是工作方式不一样。Servlet是先由源代码编译成class文件后在部署到服务器下,而jsp是先部署后编译。
9. jsp和servlet一样,运行时只会有一个实例。
10. jsp脚本使用“<%”与“%>”括起来。
11. jsp输出使用“<%=”与“%>”括起来。
12. jsp注释使用“<%--”与“--%>”括起来。
13. jsp指令以“<%@”与“%>”括起来。
<%@ page language=“java” contentType=“text/html;charset=“utf-8”
Import=“jsp使用到的类,包等” session=“true/false 是否内置session对象”
isErrorPage=“true/false 是否为错误处理页面” errorPage=“某个JSP页面相对路径”%>
<%@ include file=“jsp相对路径”%> 先包含代码然后编译
<jsp: include page=“jsp相对路径”/> 先编译后包含
14. jsp行为以“<jsp: />”括起来。
<jsp:include page=“本web应用程序内的文件”/>
<jsp:useBran id=“” scope=“” class=“”/>
id为合法的变量名称,class为javabean类的全名,scope是该javabean对象的范围,有四个取值:page,request,session,application。
page:只在该jsp页面内有效。
request:同一个request中有效。
session:对当前用户有效。
application:整个web应用程序内有效。
Javabean中的属性可以通过<jsp:getProperty name=“” property=“”/>取得属性值,
<jsp:setProperty name=“” property=“” value=“”/>设置属性值。
<jsp:forward page=“jsp相对路径”/> 等同于 servlet 中通过使用 request.getRequestDispatcher(“jsp 相对路径”).forward(request,response);
15. jsp中的隐藏对象:
out:是一个JspWriter类,用来服务器向客户端输出内容。
Request:是一个ServletRequest类,包含客户端的信息及请求信息。
Response:是一个ServletResponse类,服务器的输出媒介。
Config:是一个ServletConfig类,封装了配置在web.xml中初始化JSP的参数。
Session:是一个HttpSession类,在服务器端保存用户信息。
Application:是一个ServletContext类的实例,封装了web.xml中配置的全局初始化信息。
Page:是一个HttpJspPage类的实例,代表当前JSP页面。相当于Java类中的this。
PageContext:
Exception:封装JSP中抛出的异常信息。