《Java Web程序设计任务教程》重点知识总结(Java高级开发技术知识点总结)

本文目录

  • 前言
  • 第一章 网页开发技术
    • HTML技术
    • CSS技术
    • JavaScript基础
  • 第二章 Java Web概述
    • XML基础
    • HTTP协议
    • Tomcat
  • Servlet基础
    • Servlet体系结构图
    • Servlet开发入门
    • Servlet虚拟路径映射
    • Servlet通配符
    • ServletConfig
      • 接口常用方法
      • 使用步骤
    • ServletContext
      • Web应用的初始化参数
      • 多个Servlet对象共享数据
  • 请求和响应
    • 发送响应消息体
    • 解决中文输入乱码问题
    • 请求重定向
    • 利用Referer请求头防止“盗链”
    • 请求转发
  • 会话及其会话技术
    • Session超时管理


前言

期末考试临近,整理出《Java高级开发技术》所有重点题目,供读者救急
本文使用的教材为:
黑马程序员. Java Web程序设计任务教程[M]. 第一版. 北京:人民邮电出版社, 2017.
如需使用参考文献,会在文末进行标注,如用到网页参考文献,会在文中标注框增加跳转链接


第一章 网页开发技术

本章有HTML技术、CSS技术、JavaScript技术三个部分

HTML技术

1.html开头以标记,后跟随,标记头部信息,定义要显示的内容
2.单标记格式为<标记名 />,其意义就是用一个符号就能完整描述,双标记即为标记开始和结束,格式为<标记名>内容
3.常用标记

<p>用于标记一个段落p>
<br/>用来换行
<font 属性= "属性值">文本内容,用来控制网页中文本的样式如字号字体颜色font>
<font face="微软雅黑" size="7" color="green">这样会输出微软雅黑字号7的绿色字font>
<img src="这里放图像链接"/>就可以插入图片了,如果想加长宽就在链接后加 width和height,想加边框就是border,边框为0就是无边框
<table>table>表格标记,表格中<tr>tr>创建一行,行中<td>td>创建一个单元格
<form>form>用来创建表单,一般用法是<form action="url地址" method="提交方式" name="表单名称">,中间加表单的控件
<input type="控件类型">用于创建表单控件,如text为文本输入框,password为密码输入框,radio为单元输入框,推荐在这里预先定义好value,如
<input type="radio" name="gander" value="male"/>男
就能定义一个男的选项
checkbox是多选框,用法相似,file为文件上传,submit为提交按钮,reset为重置,点击后会清空
<textarea>testarea>用于创建多行输入框,如
<textarea cols="这里输入每行显示的字符数" rows="这里输入行数">输入框中默认显示内容textarea>

<ul>定义无序列表
<li>列表项,不定义type类型会看到的是实心圆li>
<li type="disc">就是默认,和上面一样li>
<li type="square">是实心正方形li>
<li type="circle">是空心圆li>
ul>
<a herf="跳转目标" target="目标窗口打开方式">创建超链接a>
目标窗口打开方式有_self原窗口打开(默认)、_blank新窗口打开、_parent在父框架集打开被链接文档、_top在整个窗口打开被链接文档
<div>将整个网页分割为不同的部分div>

CSS技术

1.CSS:Cascading Style Sheet
2.规则:

选择器{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}  
举例:
div{ border: 1px solid red; width: 600px; height: 400px;}
其意思为div选择器表示html作用的对象,border边框width宽度height高度,border的1px表示边框一个像素,solid表示实心边框线,红色

3.CSS在HTML的引用方式


<head>
	<style type="text/css">
		选择器{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}  
	style>
head>


<head>
	<link href="CSS文件路径" type="text/css" rel="stylesheet" />
	
head>

4.CSS选择器和常用属性


标记名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;} 

.类名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;} 

#id名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;} 

*{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;} 

JavaScript基础

1.HTML DOM(Document Object Model)

文档
根元素
元素
元素
元素
文本-文档标题
元素
文本-我的链接
属性
元素

文本-我的标题

节点访问方式:

父节点对象 = 子节点对象.属性;

parentNode返回节点的父节点,没有父节点返回null;
childNodes返回节点到子节点的节点列表;
firstChild返回节点首个子节点,没有返回null;
lastChild返回最后一个子节点,没有返回null;

2.获取文档指定元素

//通过元素ID,下为寻找属性值为UserID节点的代码
document.getElementById("UserID");
//通过元素name,下为寻找name值为userName的节点
//由于不一定是一个结果将返回一个数组,如果要限制返回哪个元素可以通过标记下标值即后面的[0]
document.getElementsByName("userName")[0];

3.JavaScript应用于Html中


<script type="text/javascript">
	此处为js代码
script>

<script type="text/javascript" src="这里放js的路径">script>

4.变量用var声明,数据类型、运算符、条件语句略
5.js调用:

function functionName/*函数名必须有*/(parameter1,parameter2.../*参数列表可选*/){
	statements;/*函数语句必须有*/
	return expression;/*返回值可选*/
}

6.事件处理

类别 事件 事件说明
鼠标单击事件 onclick 鼠标单击时触发该事件
表单事件 onblur 当前元素失去焦点时触发事件
onchange 当元素失去焦点并且元素内容发生改变时触发此事件
onfocus 当元素获得焦点触发此事件
onreset 当表单被重置触发此事件
onsubmit 当表单被提交触发此事件
页面事件 onload 当页面加载完触发此事件

如:

<body>
	<input type="button" name="btn" value="点我" onclick="art('Hello')"; />
	
body>

7.Window对象获取浏览器窗口相关信息,Date对象获取有关时间,String对象提供字符串处理的属性方法等(该部分具体内容略,请自行查阅教材)


第二章 Java Web概述

XML基础

XML(Extensible Markup Language),可扩展标记语言。





<内容>内容>没有嵌套子元素为空元素标记为内容>

元素中写明,值用单引号或双引号

1.DTD约束
以下为.dtd文件

定义一个元素,书架是元素名,书+是修饰的成分
书是元素名,括号里是包含的元素名
嵌套内容是普通文本字符串


以下为在.xml文件中进行引入

DOCTYPE 根元素名称 SYSTEM "外部DTD文件的URL">
DOCTYPE 根元素名称 PUBLIC "DTD名称" "外部DTD的URL">

在xml中直接嵌入dtd


DOCTYPE 根元素名 
	DTD语句
	>

2.Schema约束



xs:schema为根元素,所有属性都在上面的网址所以网址必须写
	

在xml中定义名称空间

<元素名 xmlns:元素名="URI">

Schema语法
元素定义


HTTP协议

HTTP协议是超文本传输协议,请求/响应式协议,客户端发出请求,服务器进行响应。其特点有:
支持客户端/服务器模式
简单快速:客户端向服务器请求服务时,只需传送请求方式和路径。由于HTTP简单,服务器程序规模小,因而通信速度快
灵活:HTTP可传输任意类型数据,正在传输的数据类型由Content-Type加以标记
无状态:对事务处理没有记忆能力,后续要处理前面消息必须重传,可能导致数据量增大

1.GET方式
GET传输数据不超过2kb,使用方式是将form表单method属性设置GET或者不设置即默认方式,提交表单后浏览器就按此方式发送请求。
URL后面有?的后面是参数信息,参数名=参数值,多个参数用&进行分割。
2.POST方式
使用POST方式传递的数据,各个元素和数据作为实体消息发送给服务器,Content-Type消息头设置为application/x-www-form-urlencoded,该消息头自动设置为实体内容长度。
POST传输数据大小无限制,且比GET更安全
3.HTTP响应消息
HTTP/1.1 200 OK
1.1是通信版本,200是状态码,OK是状态描述
状态码:1xx表示已接受继续处理,2xx表示已接收理解并接受,3xx表示需要进一步细化请求,4xx表示客户端请求有错误,5xx表示服务器端出现错误
重要状态码:200成功处理,非常顺利;
302请求资源临时从不同URI响应请求,但请求者应继续使用原有位置来进行以后的请求;
304若客户端有缓存的文档则附加if-Modified-Since请求头,表示只有请求的文档在if-Modified-Since指定时间后发生更改,服务器返回新文档。若非最新缓存版本返回的是200;
404找不到请求资源;
500服务器发生错误。
响应消息头略,自行了解吧

Tomcat

tomcat下目录的作用
bin存放tomcat的可执行文件和脚本文件,conf存放tomcat服务器和所有web应用需要访问的jar文件,logs放日志文件,temp存放临时文件,webapps是应用程序的主要发布目录,work放tomcat工作目录
其他不想写了没啥用
mysql用3306端口,tomcat默认8080


Servlet基础

Servlet体系结构图

HTTP请求
HTTP响应
客户端
HTTP服务器
Servlet容器
Servlet

Servlet开发入门

编写servlet相关类时最好用继承的方法,因为那么多接口用不过来。。。
1.创建web.xml


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                             http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0">
	<servlet>
	<servlet-name>servlet文件的名字servlet>
	<servlet-class>servlet class文件的位置servlet-class>
	servlet>
	<servlet-mapping>
		<servlet-name>servlet文件的名字servlet-name>
		<url-parttern>/网址url-parttern>
		
	servlet-mapping>
web-app>

2.Servlet生命周期
《Java Web程序设计任务教程》重点知识总结(Java高级开发技术知识点总结)_第1张图片
3.post方式html举例

<form action="路径" method="post">
姓名<input type="test" name="name" /><br />
密码<input type="test" name="psw" /><br />
<input type="submit" value="提交" />
form>

Servlet虚拟路径映射

指同一个Servlet映射成多个虚拟路径,即客户端可以通过多个路径实现对同一个Servlet的访问。


<servlet>
	<servlet-name>Testservlet-name>
	<servlet-class>
		class文件所在位置
	servlet-class>
servlet>
<servlet-mapping>
	
	<servlet-name>Testservlet-name>
	<url-pattern>/test1url-pattern>
	<url-pattern>/test2url-pattern>
servlet-mapping>

<servlet-mapping>
	
	<servlet-name>Testservlet-name>
	<url-pattern>/test2url-pattern>
servlet-mapping>

Servlet通配符

(1)如:*.do匹配所有.do结尾的url
(2)如:/asd/*匹配/asd开头所有URL
两种通配符不能混合使用

ServletConfig

初始化一个Servlet后会将servlet配置信息封装到一个ServletConfig中,并通过调用init(ServletConfig config)将对象传递。

接口常用方法

方法 功能
String getInitParameter(String name) 根据初始化参数名返回对应参数值
Enumeration getInitParameterNames() 返回一个Enumeration对象,包括所有初始化参数名
ServletContext getServletContext() 返回一个代表当前Web应用的ServletContext对象
String getServletName() 返回Servlet名字,即web.xml中servlet-name元素的值

使用步骤

(1)在web.xml中为Servlet配置参数

<servlet>
	
	<init-param>
		<param-name>encodingparam-name>
		<param-value>UTF-8param-value>
	init-param>
servlet>
<servlet-mapping>
	<servlet-name>Testservlet-name>
	<url-pattern>test2url-pattern>
servlet-mapping>

(2)编写web.xml中servlet-name的类用于读取

public class Test extends HttpServlet{
	protected void doGet (HttpServletRequest request,
	HttpServletResponse response) throws ServletException, IOException{
		PrintWriter out = response.getWriter();
		//获得ServletConfig对象
		ServletConfig config = this.getServletConfig();
		//获取参数名为encoding对应的参数值
		String param = config.getInitParameter("encoding");
		out.println("encoding="+param);
	}
	protected void doPost(HttpServletRequest request,
	HttpServletResponse response)throws ServletExpection,IOExpection{
		this.doGet(request,response);
	}
}

(3)启动Tomcat访问即可

ServletContext

Servlet启动时,会为每个Web应用创建唯一的ServletContext对象代表当前Web应用,封装Web应用信息并实现多个Servlet之间的数值共享。

Web应用的初始化参数

(1)在web.xml初始化

<context-param>
	<param-name>XXXparam-name>
	<param-value>xxxparam-value>
context-param>
<context-param>
	<param-name>AAAparam-name>
	<param-value>aaaparam-value>
context-param>
<servlet>
	<servlet-name>Test1servlet-name>
	<servlet-class>class文件位置servlet-class>
servlet>
<servlet-mapping>
	<servlet-name>Test1servlet-name>
	<url-pattern>test1url-pattern>
servlet-mapping>

(2)创建该类

public class Test1 extends HttpServlet{
	public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
	response.setContentType("text/html;charset=utf-8");
	PrintWriter out = response.getWriter();
	//得到ServletContext对象
	ServletContext context = this.getServletContext();
	//得到包含所有初始化参数名的Enumeration对象
	Enumeration<String> paramNames = context.getInitParameterNames();
	out.println("all");
	//遍历所有初始化参数名,得到相应的参数值并打印
	while(paramNames.hasMoreElements()){
	String name = paramNames.nextElement();
	String value = context.getInitParameter(name);
	out.println(name + ": " + value);
	out.println("
"
); } } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{ this.doGet(request,response); } }

多个Servlet对象共享数据

方法 功能
Enumeration getAttributeNames() 返回Enumeration对象,包括所有ServletContext的域属性名
Object getAttibute(String name) 根据参数指定的属性名返回一个与之匹配的域属性值
void removeAttribute(String name) 根据参数值指定的域属性名,从ServletContext删除匹配的域属性
void setAttribute(String name,Object obj) 设置ServletContext的域属性,其中name是域属性名,obj是域属性值

创建两个ServletContext接口方法设置和获取属性值

//省略前部
ServletContext context = this.getServletContext();
//通过setAttribute方法设置属性值
context.setAttribute("data","this servlet save data");
}
public void doPost省略了后面
this.doGet(request,reponse);
}}

请求和响应

发送响应消息体

getOutputStream():获取字节输出流对象为ServletOutputStream类型,可以直接输出字节数组的二进制数据。
getWriter():输出内容全为字符文本的网页文档

public class PrintServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, 
        HttpServletResponse response)throws ServletException, IOException {
		    String data = "itcast";
		    // 获取字节输出流对象(重要!要考的!)
			OutputStream out = response.getOutputStream();
			out.write(data.getBytes());// 输出信息
			//使用getWriter()方法发送消息体(也要考的,这是使用了getwriter的方法)
			PrintWriter print = response.getWriter(); 
			print.write(data); // 输出信息

			
		}
		public void doPost(HttpServletRequest request, 
	        HttpServletResponse response)throws ServletException, IOException {
			doGet(request, response);
		}
	}

解决中文输入乱码问题

第一种方式:

//设置httpservletresponse编码
response.setCharacterEncoding("utf-8");
//通知浏览器编码
response.setHeader("Content-Type","text/html;charset=utf-8");

第二种方式:

response.setContentType("text/html;charset=utf-8");

请求重定向

public voidsendRedirect(java.lang.String location) throws java.io.IOException
/*书上示例*/
public class LoginServlet extends HttpServlet {
	public void doGet(HttpServletRequest request,
        HttpServletResponse response)throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		// 用HttpServletRequest对象的getParameter()方法获取用户名和密码
			String username = request.getParameter("username");
			String password = request.getParameter("password");
			// 假设用户名和密码分别为:itcast和123
			if (("itcast").equals(username) &&("123").equals(password)) {
				// 如果用户名和密码正确,重定向到 welcome.html
	              response.sendRedirect("/chapter04/welcome.html");
			} else {
				// 如果用户名和密码错误,重定向到login.html
				response.sendRedirect("/chapter04/login.html");
			}
		}
		public void doPost(HttpServletRequest request, 
	        HttpServletResponse response)throws ServletException, IOException {
			doGet(request, response);
		}
	}

利用Referer请求头防止“盗链”

//书上代码
public class DownManagerServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, 
        HttpServletResponse response)throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
	         // 获取referer头的值
			String referer = request.getHeader("referer"); 
	         // 获取访问地址
			String sitePart = "http://" + request.getServerName();
			// 判断referer头是否为空,这个头的首地址是否以sitePart开始的
			if (referer != null && referer.startsWith(sitePart)) {
				// 处理正在下载的请求
				out.println("dealing download ...");
			} else {
				// 非法下载请求跳转到download.html页面
				RequestDispatcher rd = request
						.getRequestDispatcher("/download.html");
				rd.forward(request, response);
			}
		}
		public void doPost(HttpServletRequest request,
	        HttpServletResponse response)throws ServletException, IOException {
			doGet(request, response);
		}
	}

请求转发

//书上代码
public class RequestForwardServlet extends HttpServlet {
	public void doGet(HttpServletRequest request,
        HttpServletResponse response)throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		// 将数据存储到request对象中
			request.setAttribute("company", "北京传智播客教育有限公司");
			RequestDispatcher dispatcher = request
					.getRequestDispatcher("/ResultServlet");
			dispatcher.forward(request, response);
		}
		public void doPost(HttpServletRequest request,
	        HttpServletResponse response)throws ServletException, IOException {
			doGet(request, response);
		}
	}
public class ResultServlet extends HttpServlet {
	public void doGet(HttpServletRequest request,
        HttpServletResponse response)throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
          // 获取PrintWriter对象用于输出信息
			PrintWriter out = response.getWriter();
			// 获取request请求对象中保存的数据
			String company = (String) request.getAttribute("company");
			if (company != null) {
				out.println("公司名称:" + company + "
"
); } } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { doGet(request, response); } }

会话及其会话技术

Session超时管理

<session-config>
	<session-timeout>30session-timeout>
session-config>

不想写了,后面就很简单了,看书吧

你可能感兴趣的:(期末复习笔记,前端,java,html,后端)