一.4种基本语法
1.JSP注释<%-- --%>
2.JSP声明<%! %> JSP声明会转换成对应Servlet的成员变量或成员方法
3.输出JSP表达式 <%= %>
4.JSP脚本<% %> JSP脚本将转换成Servlet里的_jspService()方法里的可执行代码。这意味着在JSP小脚本中声明的变量是局部变量
二.3个编译指令
1.page 有属性:
import、errorPage(指定错误处理页面)、isErrorPage(是否为错误处理程序)、contentType(设定生成网页的文件格式和编码字符集)、pageEncoding(指定能够生成网页的编码字符集)
2.include 静态 将外部文件嵌入到当前JSP文件中,解析这个页面中的JSP语句,把目标页面的变异指令也包含进来
3.taglib <%@ taglib uri="标签库的URL" prefix="指定标签库的用于当前页面的前缀"%>
三.7个动作指令
1.forward 将用户请求“转发”到了另一个新页面,所以旧页面中的请求参数、请求属性都不会丢失。
<jsp:forward page="..">
<jsp:param name=".." value=".."/>
</jsp:forward>
2.include 动态 仅将被导入页面的body内容插入到本页面中。在Servlet中使用include(
request,response,relativePath,javax.servlet.jsp.JspWriter out, boolean flush)方法来引入被导入页面的内容
<jsp:include page="..">
<jsp:param name=".." value=".."/>
</jsp:include>
3.useBean--用于在JSP页面中初始化一个Java实例
setProperty、getProperty --设置、输出JavaBean实例的属性值
<jsp:useBean id="p1" class="person" scope="page|request|session|application" />
<jsp:setProperty name="p1” property="name" value="Keynes" />
<jsp:getProperty name="p1" property="age" />
四.9大内置对象
1.application--该实例代表本网页所属的Web应用本身。
(1)让多个JSP、Servlet共享数据
put-application.jsp:
<%application.putAttribute("counter", String.valueof(++i)%>
get-application.jsp:
<%application.getAttribute("counter")%>
(Servlet)GetApplication.java:
ServletContext sc = getServletConfig.getServletContext();
out.println(sc.getAttribute("counter");
P.S. 由于在Servlet中没有application内置对象,所以上面代码显式获取了该Web应用的ServletConfig实例。每个Web应用只有一个ServletConfig实例,在JSP代码中可以通过application内置对象访问该实例,而在Servlet中则必须通过代码获取。
(2) 获取Web应用的配置参数
首先在web.xml中给出配置参数:
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
在JSP页面中获取Web应用的配置参数
<%
String driver = application.getInitParameter(“driver”);
%>
在Servlet中获取Web应用的配置参数
ServletConfig config = getServletConfig();
String driver = config.getInitParameter(“driver”);
2.session--代表客户端浏览器与站点建立连接时开始的一次会话。用于跟踪用户操作等会话信息。
Servlet获取session:
HttpSession session=request.getSession(); //返回与当前request相关联的session
3.request--封装了一次请求,客户端的请求参数都被封装在对象。
(1)获取请求头/请求参数
String getParameter(String paramName):获取请求参数名为paramName的值
String[] getParameterValues(String name):获取请求参数名为paramName的多个值构成的数组
Map getParameterMap():获取所有请求参数名-值所组成的Map对象
(2)操作request范围的属性
JSP:参考四.1.(1)application
Servlet:
String name = request.getParamter(“name”);
(3)执行forward 请求转发
request.getRequestDispatcher(“/a.jsp”).forward(request,response);
4.response—代表服务器对客户端的响应
(1)重定向
重定向到path资源,即重新向path资源发送请求,相当于在地址栏里输入新的网址
response.sendRedirect(“redirect-result.jsp”);
(2)增加Cookie
Cookie c = new Cookie(“name”, ”Keynes”);
c.setMaxAge(24*3600);
respoinse.addCookie(c);
P.S. 获取cookie—Cookie[]cookies = request.getCookies();
page--代表页面本身
5.pageContext—使用它可以访问到1.page、2.request、3.session、4.application范围的变量
(1)getAttribute(String name, int scope); 其中scope对应于以上一个数
(2)获取其他内置对象
pageContext.getRequest()、pageContext.getResponse()、pageContext.getServletContext()、pageContext.getSession()。
五.Servlet
1.继承HttpServlet类,重写service(request,response)即可响应客户端的所有请求。作为控制器,所有用户请求都发送给Servlet,Servlet调度Model来处理用户请求。JSP呈现处理结果。
2.配置Servlet
<servlet>
<servlet-name>testServlet</servlet-name>
<servlet-class>lee.TestServlet</servlet-class>
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/javaee</param-value>
</init-param>
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>pass</param-name>
<param-value>32147</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>testServlet</servlet-name>
<url-pattern>/testServlet</url-pattern>
</servlet-mapping>