<% .. %> - 都在_jspService方法中。
<%=.. %> JSP输出语句。
隐藏对象 : 9个。
JSP- MVC - >加强MVC
在JSP中的EL表达式
及JSTL标签的开始
--再去修改项目
à 增强它的里面的功能 – 》增强界面。
1:JSP的语法
<%@ … %> 开始的位置
如:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
指令 |
功能 |
示例 |
Page指令 |
用于配置jsp代码编译成java代码时生成的格式的。 |
见上面的示例 |
Include指令 |
静态包含
被静态的包含在的页面,与包含页面,共享所有数据。 |
当A页面静态包含B页面时, A页面上声明的所有内容,B页面都可以使用。 B.jsp不会独立的执行,也不会被编译成b_jsp.java文件。
|
taglib |
标签指令 在jsp页面,标准的是不可以开发Java代码的。 可以使用标签来替代。 标签的本质默认就是Java代码 |
<c:set var="name" value="Jack" scope="request"></c:set> <hr> <hr> <c:out value="${name}"></c:out> |
1:page指令
由于jsp页面上的数据,是通过jspWiter输出的,Writer对象,默认的自动刷出到页面上去的。当缓存放满以后。
import
<%@page import="java.io.PrintWriter,java.io.*"%
是否忽略EL表达式
isErrorPath/errorPage
isErrorPage是指自己是显示异常的界面,声明isErrorPage=true以后,添加一个新的隐藏变量exception : Throwable
errorPage – 是指出错以后,去哪儿显示。
可以在web.xml中配置异常的页面:
<error-page>
<error-code>500</error-code>
<location>/jsps/showerror.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/jsps/null.jsp</location>
</error-page>
2:JSP注释
3:JSP声明
用于声明成员变量与成员方法的
4:JSP动作-也叫Jsp标签 – 很少用,但总是考
<jsp:forward page=”….”/> 转发到某个资源上去。
附加:
HttpSerletRequest类
RequestDispatcher |
getRequestDispatcher(java.lang.String path)
Path 可以 不以 / 开始,则是指当前这个Servlet所在的目录。 http://local/20160425/abc/one forward(“two”); 将去的目录是这儿: http://local/20160425/abc/two
可以 以 / 开始,则表示,在当前项目的根下 http://local/20160425/abc/one forward(“/two”); 将去的目录是这儿: http://local/20160425/two
|
ServletContext
RequestDispatcher |
getRequestDispatcher(java.lang.String path)
必须总是以/开始,如果不以/开始,则异常。
The pathname must begin with a "/" and is interpreted as relative to the current context root. Use getContext to obtain a RequestDispatcher for resources in foreign contexts. This method returns null if the ServletContext cannot return a RequestDispatcher.
|
被包含的目标先执行一次,将执行的结果返回给源页面。
<p>主页</p>
<jsp:include page="/jsps/b.jsp"></jsp:include>
取值和设置值:
<jsp:useBean id="pp" class="cn.domain.Person"></jsp:useBean>
<!-- 设置属性 -->
<jsp:setProperty property="name" name="pp" value="Jack"/>
<jsp:setProperty property="age" name="pp" value="39"/>
<br>
<jsp:getProperty property="name" name="pp"/>
<br>
小结:
指令 - 重点
Java代码块 – 重点
输出语句
隐藏对象
声明
动作 jsp:forward
将所有相关功能,如CRUD 会议,放到MeetingServlet中去。
扩展HttpServlet来实现一个Serlvet可以做多个功能。
package cn.meeting.core;
import java.io.IOException;
import java.lang.reflect.Method;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 抽象类,不能配置到web.xml中
*/
public abstract class BaseServlet extends HttpServlet {
/**
* 直接重写service方法,避免httpServlet分发
*/
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 在儿设置请求的编码类型,在其他的servlet中就不用设置了
req.setCharacterEncoding("UTF-8");
// 同时设置响应的格式
resp.setContentType("text/html;charset=UTF-8");
// 接收一个参数,用于执行用户指定的方法
String methodName = req.getParameter("cmd");
if (methodName == null || methodName.trim().equals("")) {
methodName = "execute";
}
// 通过反射来调用子类的方法
try {
Method method = this.getClass().getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
method.invoke(this, req,resp);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 要求子类,必须要拥有一个默认的方法
*/
public abstract void execute(HttpServletRequest req, HttpServletResponse resp) throws Exception;
}