1、jsp翻译成servlet
jsp翻译保存在apache-tomcat-7.0.37.2\work\Catalina\localhost\HelloJavaWeb\org\apache\jsp
jsp乱码解决pagEncoding="UTF-8"
JSP脚本表达式:用于将程序数据输出到客户端 <%= 变量或表达式 %>
<%@ page sessio="false"%>考虑到服务器压力,要是不用可以关了。
2、错误页面
jsp里面可以配置错误页面<%@ page error-page="/errors/error.jsp"%>,也可以在xml中配置error-page,
jsp里面配置<%@ page isErrorPage="true"%>可以将Exception对象传递进jsp
<error-page>
<exception-type>java.lang.ArithmetException</exception-type>
<location>/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/errors/404.jsp</location>
</error-page>
3、pageContext以及九大隐式
九大隐式
Request request;
Response response;
HttpSession session = null;
ServletContext application;
ServletConfig config;
JspWriter out = null;
Object page = this;
Exception exception;
PageContext pageContext;
pageContext:封装了其他8大隐式,相当于提供了一个访问其他隐式对象的入口,可以用于自定义标签开发当做参数传入
4、JspWriter out;//是一个缓冲流,可以设置缓冲的大小
5、页面包含
静态包含(编译时包含,翻译成一个servlet)<@include file="">//建议使用静态包含
动态包含(运行时包含,翻译成多个servlet)request.getDispatcher.include()//pageContext.include()//<jsp:include page=""></jsp:include>
6、forward标签
<jsp:forward page=""></jsp:foward>
可以带参数过去,param
7、jsp的useBean标签:body部分只在创建javabean的实例对象的时候创建
<jsp:useBean id="person" class="com.xiaozhi.domain.Person"/>
可以看成person=new Person();
8、setProperties标签、getProperties标签
<!-- 手工为bean属性赋值 -->
<jsp:setProperty name="person" property="name" value="xiaozhi"/>
<!-- 请求参数为bean属性赋值 :支持八种数据类型的自动转化-->
<jsp:setProperty name="person" property="name" param="name"/>
可以看成,内部使用beanUtils.setProperties(person,"name",name);来处理的。
<!-- 用所有请求参数为bean属性赋值 -->
<jsp:setProperty name="person" property="*" />
可以看成内部使用内省,获取关于name字段的Description对象,通过这个对象得到写方法,执行写方法。
<jsp:getProperty name="person" property="name" />
可以看成person.getName();
9、EL表达式
${data}//实际上就是pageContext.findAttribute()//pageContext request response application
取出web路径:
${pageContext.request.CotextPath}
El表达式通常用.号,.号取不出来了,再用[]
<%
Person p=new Person();
p.setName("namenamename");
request.setAttribute("p",p);
%>
${p.name }
<%
Person p1=new Person();
Address a=new Address();
a.setCity("huang gang");
p1.setAddress(a);
request.setAttribute("p1",p1);
%>
${p1.address.city }
<%
List list=new ArrayList();
list.add(new Address("上海"));
list.add(new Address("北京2"));
list.add(new Address("武汉"));
request.setAttribute("list",list);
%>
${list[1].city } <%--北京2 --%>
<%
Map map=new HashMap();
map.put("aa",new Address("上海"));
map.put("bb",new Address("北京2"));
map.put("cc",new Address("武汉"));
map.put("111",new Address("南京"));
request.setAttribute("map",map);
%>
${map.aa.city } <%--上海 --%>
${map["111"].city } <%--南京 ,通常用点号,点号取不出来用[]--%>
10、JSTL的使用
导入两个包jstl、standar.jar
导入标签库<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
List list = new ArrayList();
list.add(new Address("上海"));
list.add(new Address("北京2"));
list.add(new Address("武汉"));
request.setAttribute("list", list);
%>
<c:forEach var="a" items="${list}">
${a.city}
</c:forEach>
<%
Map map = new HashMap();
map.put("aa", new Address("上海"));
map.put("bb", new Address("北京2"));
map.put("cc", new Address("武汉"));
map.put("111", new Address("南京"));
request.setAttribute("map", map);
%>
<c:forEach var="entry" items="${map }">
${entry.key } : ${entry.value.city } <br />
</c:forEach>
<c:if test="${user!=null }">
欢迎
</c:if>
<c:if test="${user==null }">
请登录
</c:if>
11、css中的路径写法servlet转发到jsp,jsp加载css,css加载图片,是相对于当前的浏览器的地址(先写全局,全局不行再写相对于浏览器地址)
12、将jsp改坏,访问出错,快速点刷新,服务器刚让我翻译完又让我翻译我不翻译了,拿着翻译好的servlet返回给用户。造成一会好一会坏的现象。