第1章 Web前端基础
基本标签
作用 | 标签 |
---|---|
标题 | <h1> - <h6> |
段落 | <p align=“center”> |
滚动 | <marquee direction=“滚动方向” behavior=“滚动方式”> |
无序列表 | <ul type=“disc”></ul> |
有序列表 | <ol type=“1”></ol> |
图片 | <img src=“图像文件的路径及名称”> |
超链接 | <a href=“链接路径” target=“目标窗口的打开方式”> |
表格 | <table><tr><td></td></tr></table> |
表单 | <form action=“表单的处理程序”></form> |
文本框与密码框 | <input type=“text” value="" name=“username”/> <input type=“password” value=“123456” name=“password”/> |
单选按钮与复选框 | <input type=“radio” value=“male” name=“sex” checked/> <input type=“checkbox” value=“zhangsan” name=“lover” checked/> |
按钮 | <input type=“submit” value=“提交” /> <input type=“reset” value=“重置” /> <input type=“button” value=“关闭” οnclick=“window.close()” /> |
文件域 | <from action="" enctype=“multipart/form-data”> <input type=“file” name=“fileName”/> </from> |
下拉列表 | <select name=“cities” size=“2” multiple> <option value=“beijing” selected>北京 <option value=“shanghai” selected>上海 </select> |
文本域 | <textarea name=“文本域的名称” cols=“列数” rows=“行数”></textarea> |
第2章 Java Web环境的构建
第3章 JSP语法
作用 | 写法 |
---|---|
HTML注释 | <!-- HTML注释 --> |
JSP注释 | <%-- JSP注释 --%> |
Java程序片 | <% Java代码 %> |
成员变量与方法的声明 | <%! 变量或方法定义 %> |
Java表达式 | <%= 表达式 %> |
第4章 JSP内置对象
request对象
包名: javax.servlet.http.HttpServletRequest
方法 | 功能说明 |
---|---|
Object getAttribute(String name) | 返回指定属性的属性值 |
String getParameter(String name) | 返回name指定的参数值 |
void setAttribute(String key, Object obj) | 设置属性的属性值 |
转发: request.getRequestDispatcher(“hello.jsp”).forward(request, response);
response对象
包名: javax.servlet.http.HttpServletResponse
设置响应表头: response.setHeader(“refresh”, 3);
重定向: response.sendRedirect(String url);
session对象存取数据
方法 | 功能说明 |
---|---|
public void setAttribute(String key, Object obj) | 将参数obj指定的对象保存到session对象中 |
public Object getAttribute(String key) | 获取session中关键字是key的对象 |
public void removeAttribute(String key) | 从session中删除关键字key所对应的对象 |
application对象
任何用户共享一个application对象,直到服务器关闭
,这个application对象才被取消。
pageContext对象
即页面上下文对象,表示当前页面运行环境
,用于获取当前JSP页面的相关信息,他的作用范围为当前JSP页面。
page对象
page对象是一个与Servlet有关的内置对象,它表示JSP文件转译后的Servlet对象,代表JSP页面本身即this。因此它可以调用Servlet类所定义的方法。
JSP的四种作用域
-
页面域
页面执行期间。存储在页面域的对象只能在它所在页面被访问。
-
请求域
一次请求过程。包括请求被转发或者被包含的情况。存储在请求域中的对象只有在此次请求过程中才可以被访问,多次请求都可以被访问。
-
会话域
客户端与服务器所连接的时间。客户端在第1次访问服务器时创建会话,在会话过期或用户主动退出后,会话结束。存储在会话域中的对象在整个会话期间(可以包含多次请求)都可以被访问。
-
应用域
服务器开始执行到服务器关闭为止,是4个作用域中时间最长的。存储在应用域中的对象在整个应用程序运行期间可以被所有JSP和Servlet共享访问。
JSP的4种作用域分别对应pageContext、request、session和application 4个内置对象。
第5章 JSP与JavaBean
首先使用page指令的import属性导入创建bean的类,例如:
<%@ page import="com.bean.*"%>
useBean
<jsp:useBean id="bean的名字" class="创建bean的类" scope="bean的有效范围"/>
<jsp:useBean id="bean的名字" type="创建bean的类" scope="bean的有效范围"/>
getProperty
<jsp:getProperty name="bean的名字" property="bean的属性" />
setProperty
<jsp:setProperty name="bean的名字" property="bean的属性" value="字符串" />
第6章 Java Servlet基础
继承javax.servlet.http.HttpServlet
类
部署Servlet类的两种方式:
- 在web.xml(WEB-INF文件夹下)中部署Servlet
- 基于注解的方式部署Servlet
在web.xml中部署Servlet
<servlet>
<servlet-name>firstServlet</servlet-name>
<servlet-class>servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>firstServlet</servlet-name>
<url-pattern>/firstServlet</url-pattern>
</servlet-mapping>
基于注解的方式部署Servlet
@Webservlet(name = "secondServlet", urlPattern={
"/secondServlet"})
public class SecondServlet extends HttpServlet {
}
重定向与转发
-
转发
在
服务器端
操作,地址栏显示之前的请求地址,以前的request中存放的信息不会失效。 -
重定向
在
客户端
操作,以前的request中存放的信息全部失效,并进入一个新的request作用域。
通过JSP页面访问Servlet
1. 通过表单访问Servlet
<form action="isLogin" method="post">
……
</form>
该action是一个Servlet, @WebServlet的urlPatterns属性值为{"/isLogin"}
2. 通过超链接访问Servlet
<a href="loginServlet?user=tyx&&pwd=123">查看用户名和密码</a>
这个超链接就将user=tyx和pwd=123两个信息提交给Servlet处理
第7章 会话跟踪技术
Cookie技术
Cookie vistedCountC = new Cookie("vistedCount", "1000");
设置Cookie对象的存活时间(以秒为单位):setMaxAge(int time)
- 时间为正整数,表示其存活的秒数;
- 若为负数,表示其为临时Cookie(在浏览器关闭时失效);
- 若为0,表示通知浏览器删除相应的Cookie对象。
不同浏览器不共享
Session技术
HttpSession对象将在用户第1次访问
服务器时由容器创建(只有访问JSP、Servlet等程序时才会创建,只访问HTML、image等静态资源并不创建)
URL重写技术
-
URL重写是指服务器程序对接收的URL请求重新写成网站可以处理的另一个URL的过程,URL重写技术是实现动态网站会话跟踪的重要保障。
-
当不能确定客户端浏览器是否支持Cookie的情况下,使用URL重写技术可以对请求的URL地址追加会话标识,从而实现用户的会话跟踪功能。
-
要保证每个页面都必须使用Servlet或JSP动态页面。
-
可以通过
encodeURL()
方法和encodeRedirectURL()
方法实现URL重写,其中encodeRedirectURL()方法主要对使用sendRedirect()方法的URL进行重写。
//对重定向的URL进行重写
String encodeURL = response.encodeRedirectURL("toRedirectServlet");
response.sendRedirect(encodeURL);
第8章 过滤器与监听器
Filter
- 响应优先级高于Servlet
- 可以拦截服务器中的任意资源(jsp,html,jpg,servlet)
实现javax.servlet.Filter
接口
在web.xml中部署过滤器
<filter>
<filter-name>firstFilter</filter-name>
<filter-class>filter.FirstFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>firstFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
基于注解的方式部署过滤器
@WebFilter
doFilter()方法
chain.doFilter(request, response);
如果执行了该语句,就会执行下一个过滤器。如果没有下一个过滤器,就返回请求目标程序。如果因为某个原因没有执行该语句,则请求就不会继续交给以后的过滤器或请求目标程序,这就是所谓的拦截请求。
过滤器的执行顺序
- 先执行web.xml中配置的(按配置的先后顺序)
- 先看名字的长度,名字长的先执行
- 名字长度相等,按字典序执行
第9章 EL与JSTL
JSP标准标签库JSTL
标签 | 作用 |
---|---|
<c:out> | 显示数据的内容 |
<c:set> | 设置作用域变量 |
<c:remove> | 删除某个变量 |
<c:if> <c:choose> <c:when> <c:otherwise> |
流程控制 |
<c:forEach> | 迭代 |
<c:forTokens> | 迭代字符串中由分隔符分隔的各成员 |
<c:url> <c:redirect> <c:import> |
URL操作相关 |
第10章 文件的上传与下载
文件上传的表单设置
<form action="Upload" method="post" enctype="multipart/form-data">
<input type="file" name="headImage"><br>
<input type="submit" value="上传">
</form>
Servlet写法
单文件
@WebServlet("/Upload")
@MultipartConfig(maxFileSize = 10*1024*1024)
public class Upload extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Part part = request.getPart("headImage");
File uploadFileDir = new File(getServletContext().getRealPath("/uploadFiles"));
part.write(uploadFileDir + File.separator + name);
}
}
多文件
File uploadFileDir = new File(getServletContext().getRealPath("/uploadFiles"))
Collection<Part> parts = request.getParts();
for (Part part: parts) {
part.write(uploadFileDir + File.separator + name);
}
第11章 JDBC数据库访问
步骤:
- 注册驱动
- 创建连接
- 写SQL语句
- 执行SQL语句
- 获取结果
- 关闭连接
注册数据库驱动程序
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
和指定的数据库建立连接
try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf-8", "用户名", "密码");
} catch (SQLException e) {
e.printStackTrace();
}
数据库记录从后往前滚动
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
……
rs.last();
int rowNumber = rs.getRow();
rs.afterLast();
while(rs.previous()) {
……
}
数据库连接池
为数据库连接建立一个缓冲池
,预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从缓冲池中取出一个,使用完毕再放回去。
第12章 Ajax JSON以及Jquery技术
GET请求
xmlhttp.open("GET", "AjaxTestServlet", true);
xmlhttp.send();
POST请求
xmlhttp.open("post", "AjaxTestServlet", true);
xmlhttp.send();
JSON
{
key1: value1,
key2: value2,
key3: [value1, value2],
……
}
JQuery
$(selector).action()