零碎的记录一些重要但容易遗忘的point,感觉上帝就没给我点这个记忆力的技能……
$. WEB-INF目录详解
WEB-INF目录客户端无法访问,只有服务器可以访问;
classes文件夹,放置.class文件;
lib文件夹,放置项目需要的jar包;
web.xml,项目部署文件;
$. web.xml中配置首页(直接url项目名称就能打开的页面)
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
$.修改MyEclipse默认的JRE
windows - preferences - java - installed JREs
$.修改MyEclipse默认的Tomcat
windows - preferences - MyEclipse - server - Tomcat - Tomcat Home Directory;
并修改对应的JDK;
$.修改项目虚拟路径
项目右键 - MyEclipse - web - Web Context-root
$.修改Tomcat默认端口
conf/server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
$.JSP页面组成
指令;表达式;小脚本;声明;注释;静态内容
$.JSP指令:page
language,JSP指定的脚本语言;
import,JSP中用到的类文件;
contentType,编码方式;
典型值:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"%>
$.请求重定向与请求转发的区别:
请求重定向:
response.sendRedirect(url); 本质上讲等于两次请求,前一次的请求对象不会保存,地址栏的URL会改变。
A去找B办事,B让A自己去找C。
请求转发:
request.getRequestDispatcher().foward(req, res); 一次请求,转发后对象会保存,地址栏URL不变。
A去找B办事,B让A等着,自己去找C,办完后B把结果返回给A。
$.JSP基础语法
1.注释
HTML注释:<!-- --> 客户端查看源码时可见
JSP注释:<%-- --%> 客户端查看源码时不可见
2.脚本
<%
out.println("Hello world");
%>
3.声明
<%!
String s = "Hello world";
int add(int a, int b)
{
return a + b;
}
%>
4.表达式(注意,表达式不以分号结尾)
<body>
<%!
String s = "Hello world";
int add(int a, int b)
{
return a + b;
}
%>
x + y = <% = add(10, 5) %><br>
你好,<% = s %><br>
</body>
5.生命周期
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>life.jsp</title>
</head>
<body>
<%!
private int initVar = 0;
private int serviceVar = 0;
private int destroyVar = 0;
%>
<%!
public void jspInit()
{
initVar++;
System.out.println("jspInit(): JSP被初始化了" + initVar + "次");
}
public void jspDestroy()
{
destroyVar++;
System.out.println("jspDestroy(): JSP被销毁了" + destroyVar + "次");
}
%>
<%
serviceVar++;
System.out.println("_jspService(): JSP共响应了" + serviceVar + "次请求");
String content1 = "初始化次数 : " + initVar;
String content2 = "响应客户请求次数 : " + serviceVar;
String content3 = "销毁次数 : " + destroyVar;
%>
<h1>JSP生命周期测试</h1>
<p><%=content1%></p>
<p><%=content2%></p>
<p><%=content3%></p>
</body>
</html>
$.解决中文乱码
标准方法:
修改Tomcat的server.xml文件,增加下面的URIEncoding
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
简单方法:
<% request.setCharacterEncoding("UTF-8"); %>//只能解决post方式的请求
$.JSP内置对象(不需要new就可以使用)
1.out对象(JspWriter)
2.request对象
3.response对象
PrintWriter的输出优先于out对象的输出,除非out对象先flush
4.session对象
5.application对象
6.page对象
7.pageContext对象
8.config对象
9.exception对象
在需要跳转的页面中的<%@ page %>中配置errorPage属性
在错误页中的<%@ page %>中配置isErrorPage属性为true