Web系统和技术

前端篇

HTML

  1. HTML文档结构
<!DOCTYPE HTML>
<html>
	<head>
		<title>my title</title>
	</head>
	<body>
	</body>
</html>
  1. 单标签,双标签,注释
    单标签:<link/> <br/> <img/>
    双标签:<a> <span> <h1>
    注释:<!-- -->
  2. HTML常用标签

CSS

  1. CSS语法规则

  1. CSS样式表的引用方式

行内式
注意这里不能使用选择器

<span style="font-size: 20px;"> </span>

内嵌式

<head>
	<style type="text/css">
		span{
		
		}
	</style>
</head>

外链式

<head>
	<link href="./1.css" type="text/css" rel="stylesheet"/>
</head>

导入式

<head>
	<style>
		@import url
	</style>
</head>
  1. CSS选择器
*.{}
h1{}
.class1{}
#id1{}

JS

  1. JS的组成
  2. JS的引入方式

行内式

<input type='button' onclick="js code">

内嵌式

<script type="text/javascript">
	js code
</script>

外链式

<script type="text/javascript" src="./1.js"></script>
  1. JS基本语法
    number
    string
    boolean
    object
    null
    undefine
function showMsg(a, b){
	return 3;
}
  1. DOM
  2. BOM
  3. JS事件处理

XML

后端篇

HTTP协议

HTTP请求行:

HTTP请求行位于消息的第一行,包含三个部分:请求方式、资源路径、HTTP版本。
GET /index.html HTTP/1.1

HTTP响应状态行:
HTTP响应状态行位于相应消息的第一行,包含三个部分:HTTP版本、一个表示成功或错误的证书代码(状态吗)和对状态吗进行描述的文本信息
HTTP/1.1 200 OK

  • 1xx:请求已接收,需要继续处理
  • 2xx:请求以成功被服务器接收、理解并接受
  • 3xx:为完成请求,客户端需要进一步细化请求
  • 4xx:客户端的请求有错误
  • 5xx:服务器出现错误

例如:
200 正常
302 跳转
304 有缓存
404 找不到资源
500 服务器出错

请求头:
在HTTP请求消息中,请求行之后就是若干请求头
Host
Referer
Accept
Accept-Charset
Accept-Encoding
Accept-Language
User-Agent
Connection
Cache-Control
Authorization
Proxy- Authorization
If-Match
If- Modified-Since
Range
If-Range
Max-Forward

常用请求头:

  • Accept:
    • text/html
    • image/gif
    • image/*
    • */*
  • Accept-Encoding:
    • gzip,compress
  • Host:
    • www.itcast.cn:80
  • If-Modified-Since:
    • GMT格式事件
  • Referer:
    • http://xxxxxx
  • User-Agent:
    • xxxxx

响应头:
Location 地址 Content-Type 类型 这两个不能同时存在
Content-Type text/html;charset=utf-8
Server
Refresh 等待刷新时间 可以带参数
Content-Disposition 可以带参数
Content-Encoding 压缩方式 取 Accept-Encoding 里面的值

常用响应头:

  • Location:
    • http://xx(绝对路径)
  • Server:
    • Apache-Coyote/1.1
  • Refresh:
    • 3(单位秒)
  • Content-Disposition:
    • attachment; filename=lee.zip
  • Content-Encoding:
    • gzip

Servlet

Tomcat默认端口:8080

实现Servlet接口的类都称为Servlet
Servlet封装了对用户请求的处理
Servlet由容器管理,包括创建、调用和销毁

Servlet接口方法

void init()  // 第一次请求时创建初始化一次,只会创建一个
void service(ServletRequest request, ServletResponse response)  // 处理用户请求
void destroy()  // 销毁时调用
ServletConfig getServletConfig()
String getServletinfo()

Servlet继承关系
Servlet -> GenericServlet -> HttpServlet -> 自定义Servlet

 <servlet>
     <servlet-name>demo</servlet-name>
     <servlet-class>demoServlet</servlet-class>
 </servlet>
 <servlet-mapping>
     <servlet-name>demo</servlet-name>
     <url-pattern>/hello</url-pattern>
 </servlet-mapping>

HttpServlet Demo

@WebServlet(name = "myServlet", value = "/myservlet") //value和urlPattern等价
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("Hello");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

ServletConfig 4

ServletConfig config = this.getServletConfig();

设定方法:

@WebServlet(name="TestServlet03", urlPatterns="/TestServlet03", initParams = {@WebInitParam(name = "encoding",value = "UFT-8"),})
public class TestServlet03 extends HttpServlet {
 protected void doGet(HttpServletRequest request,
	HttpServletResponse response) throws ServletException,IOException{
		PrintWriter out = response.getWriter();
		ServletConfig config = this.getServletConfig();
		String param = config.getInitParameter("encoding");
	        out.println("encoding="+param);
	}
   protected void doPost(HttpServletRequest request,
	HttpServletResponse response) throws ServletException, IOException {
		this.doGet(request, response);
	}
}

方法说明功能描述
String getInitParameter(String name)根据初始化参数名返回对应的初始化参数值
Enumeration getInitParameterNames()返回一个Enumeration对象,其中包含了所有的初始化参数名
ServletContext getServletContext()返回一个代表当前Web应用的ServletContext对象
String getServletName()返回Servlet的名字

ServletContext 2+4+4

ServletContext context = this.getServletContext();
可以在web.xml进行初始化配置

 <context-param>
      <param-name>参数名</param-name>
      <param-value>参数值</param-value>
  </context-param>
  <context-param>
      <param-name>参数名</param-name>
      <param-value>参数值</param-value>
   </context-param>

关于初始化参数

方法说明功能描述
String getInitParameter(String name)根据初始化参数名返回对应的初始化参数值
Enumeration getInitParameterNames()返回一个Enumeration对象,其中包含了所有的初始化参数名

关于设置属性值

方法说明功能描述
Enumeration getAttributeNames()返回一个Enumeration对象,该对象包含了所有存放在ServletContext中的所有域属性名
Object getAttribute(String name)根据参数指定的属性名返回一个与之匹配的域属性值
void removeAttribute(String name)根据参数指定的域属性名,从ServletContext中删除匹配的域属性
void setAttribute(String name, Object obj)设置ServletContext的域属性,其中name是域属性名,obj是域属性值

关于获取资源

方法说明功能描述
Set getResourcePaths(String path)返回一个Set集合,集合中包含资源目录中子目录和文件的路径名称。参数path必须以正斜线(/)开头,指定匹配资源的部分路径
String getRealPath(String path)返回资源文件在服务器文件系统上的真实路径(文件的绝对路径)。参数path代表资源文件的虚拟路径,它应该以正斜线(/)开头,“/”表示当前Web应用的根目录,如果Servlet容器不能将虚拟路径转换为文件系统的真实路径,则返回null
URL getResource(String path)返回映射到某个资源文件的URL对象。参数path必须以正斜线(/)开头,“/”表示当前Web应用的根目录
InputStream getResourceAsStream(String path)返回映射到某个资源文件的InputStream输入流对象。参数path传递规则则和getResource()方法完全一致

ServletRequest 2+6+2

ServletResponse

setStatus

sendError

SendError

方法说明功能描述
void addHeader(String name, String value)这两个方法都是用来设置HTTP协议的响应头字段,其中,参数name用于指定响应头字段的名称,参数value用于指定响应头字段的值。
void setHeader(String name, String value)不同的是,addHeader()方法可以增加同名的响应头字段,而setHeader()方法则会覆盖同名的头字段
void addIntHeader(String name, int value)这两个方法专门用于设置包含整数值的响应头。
void setIntHeader(String name, int value)避免了调用addHeader()与setHeader()方法时,需要将int类型的设置值转换为String类型的麻烦
void setContentLength(int len)该方法用于设置响应内容的实体内容的大小,单位为字节。对于HTTP协议来说,这个方法就是设置Content-Length响应头字段的值
方法说明功能描述
void setContentType(String type)既设置服务器的编码方式,又设置响应头。该方法用于设置Servlet输出内容的MIME类型,对于HTTP协议来说,就是设置Content-Type响应头字段的值。例如,如果发送到客户端的内容是jpeg格式的图像数据,就需要将响应头字段的类型设置为 “image/jpeg”。需要注意的是,如果响应的内容为文本,还可以设置字符编码,如:text/html;charset=UTF-8
void setLocale(Locale loc)该方法用于设置响应消息的本地信息。对HTTP来说,就是设置Content-Language响应头字段Content-Type头字段中的字符集编码部分。需要注意的是,如果HTTP消息没有设置Content-Type头字段,setLocale()方法设置的字符集编码不会出现在HTTP消息的响应头中。如果调用setCharacterEncoding()或setContentType()方法指定了响应内容的字符集编码,setLocale()方法将不起作用,只具有指定字符集编码的功能
void setCharacterEncoding(String charset)只设置服务器编码方式。该方法用于设置输出内容使用的字符编码,对HTTP协议来说,就是设置Content-Type头字段中的字符集编码部分。如果没有设置Content-Type头字段,setCharacterEncoding方法设置的字符集编码不会出现在HTTP消息的响应头中。setCharacterEncoding方法比setContentType()和setLocale()方法的优先级高,setCharacterEncoding方法的设置结果将覆盖setContentType()和setLocale()方法设置的字符集

doGet
doPost

ServlerConfig对象

String getInitParameter(String name);
Enumeration getInitParameterNames();
ServletContext getServletContext();
String getServlet
String getRequestURI();
StringBuffer getRequestURL();
String getContextPath();
String getServletPath();

请求转发

通过HttpServletRequest获取dispatcher RequestDispatcher getRequestDispatcher(String path)

通过forward方法进行转发forward(ServletRequest request,ServletResponse response)

会话及会话技术

Cookie

构建Cookie:

服务器向客户端发送Cookie时会设置响应头
Set-Cookie: user=itcase; Path=/;
Servlet API提供了javax.servlet.http.Cookie
构造方法:Cookie(String name, String value);
Cookie类一旦创建,名称不能再更改,但是值可以被更改

String getName();
void setValue(String newValue);
String getValue();
void setMaxAge(int exiry);  // 秒
// 如果为正数,到时间后删除;如果为负数,关闭浏览器时才删除;如果为0,则立即删除
int getMaxAge();
void setPath(String uri);
String getPath();
void setDomain(String pattern);
// 值必须以.开头,不区分大小写
String getDomain();
void setVersion(int v);
int getVersion();
void setComment(String purpose);
String getComment();
void setSecure(boolean flag);
boolean getSecure();

获取Cookie:
Cookie[] cookies = request.getCookies();

Session

Session的使用

HttpSession session = request.getSession(true/false);

如果参数是true,在没有
由于getSession()方法可能会产生发送回话标识号的Cookie头字段,所以必须在发送任何响应内容之前调用getSession()方法。

//HttpSession对象常用方法
String getId();
long getCreationTime(); //返回时间戳
long getLastAccessedTime(); //返回时间戳
void setMaxInactiveInterval(int interval); //默认空闲超时间隔,单位为秒,设置为-1则永不过期
boolean isNew();
void invalidate(); //强制设为无效
ServletContext getServlerContext(); //返回HttpSession对象所属的Web应用程序对象
void setAttribute(String name, Object value);
**Object** getAttribute(String name); //如果要String要强转(String)obj
void removeAttribute(String name);

Session的生命周期

  1. Session失效的三种情况:超时(规定时间没有新请求,tomcat默认30min)、强制失效、关闭浏览器。
  2. 设置超时时间的3种方式:setMaxInactiveInterval、项目的web.xml配置文件的session-config->session-timeout、配置服务器的web.xml

在web.xml中设置session超时时间,单位时分钟。设置为0或附属,表示会话用不超时

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

域对象

对象生命周期有效范围
PageContext (JSP)访问页面 - 离开页面一次请求的一个页面
HttpServletRequest发送请求 - 返回响应一个用户的一次请求
HttpSession开始会话 - 会话超时或被销毁一个用户的一个会话
ServletContext应用启动 - 应用关闭整个应用程序,所有用户共享

JSP

JSP = HTML(JavaScript) + Java code + jsp tags

java code

java片段 <% a %> 可以是任何java代码,不能声明方法,需要分号
声明 <%! b %> 声明变量或方法,需要分号
表达式 <%= %>,不需要分号

class JspServlet{
	b
	service(){
		a
	}
}

jsp tags

  1. 注释 <%-- --%>
  2. 指令标签:page、include、taglib
  3. 动作标签:include、forward

JSP注释

<!-- 这是一个HTML注释,会在前端显示出来 -->
<%-- 这是一个JSP注释,不会在前端显示出来 --%>

JSP指令标签

指令格式:<% @xxx %>

page指令
用于对页面的某些特性进行描述
<%@ page 属性名1="属性值1" %>
属性:language、import、session、isErrorPage、errorPage、contentType、pageEncoding

include指令
一个页面包含另一个页面,会将file代码合并进来,形成一个jsp
<%@ include file="被包含的文件地址" %>
一般使用相对路径

为什么是file?因为是引入的另外一个文件进行编译

taglib指令
标识该页面中所使用的标签库,同时引用标签库并指定标签的前缀
<%@ taglib prefix="tagPrefix" uri="tagURI" %>

  • prefix:用于指定标签的前缀,不能为jsp、jspx、java、sun、servlet、sunw
  • uri:用于指定标签库文件的存放位置
    例:在页面中引用JSTL的核心标准库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

这个好像不是重点吧

JSP动作标签

包含文件元素<jsp:include>
<jsp:include page="URL" flush="true/false" />

  • page:被引入文件的相对路径
  • flush是否将当前页面的输出内容刷新到客户端,默认为false
    原理是将被包含页面编译处理后的结果包含在当前页面中
    include指令和<jsp:include>区别:include指令是将文件合成后进行编译 所以不能用重复的变量名或方法,<jsp:include>是每个文件单独编译。

为什么是page?因为是转发到的其他页面的结果到这里进行合并处理

请求转发元素<jsp:forward>
请求转发后没当前页面将不再执行,而是执行该元素指定的目标页面
<jsp:forward page="relativeURL" />

  • page:转发目标的相对路径,必须是当前应用程序的资源

为什么是page?因为转发到的是页面而不是文件

JSP隐式对象

名称类型描述
outjavax.servlet.jsp.JspWriter用于页面输出
requestjavax.servlet.http.HttpServletRequest得到用户请求信息
responsejavax.servlet.http.HttpServletResponse服务器向客户端回应消息
configjavax.servlet.ServletConfig表示当前 JSP 页面的配置信息。
sessionjavax.servlet.http.HttpSession用于保存用户的信息
applicationjavax.servlet.ServletContext代表 JSP 页面的全局上下文,用于存储应用范围的对象。
pagejava.lang.Object代表当前的 JSP 页面实例本身,类似于 this 关键字。
pageContextjavax.servlet.jsp.PageContext提供对 JSP 页面内的上下文信息的访问,包含所有隐式对象。
exceptionjava.lang.Throwable捕获的异常对象,仅在页面声明 isErrorPage="true" 时可用。
  • out对象
    • out对象是JspWriter,有一个单独的缓冲区,所以和PrintWriter一起使用的时候会在后面输出。
  • pageContext对象,代表当前JSP页面的运行环境,可以获取JSP的其他8个隐式对象
    • 隐式对象
      • JspWriter getOut()
      • Object getPage()
      • ServletRequest getRequest()
      • ServletResponse getResponse()
      • HttpSession getSession()
      • Exception getException()
      • ServletConfig getServletConfig()
      • ServletContext getServletContext()
    • pageContext不仅提供了获取隐式对象的方法,还提供了存储数据的功能
      • setAttribute(String name, Object value)
      • setAttribute(String name, Object value, int scope)
      • getAttribute(String name): 获取当前页面范围内的属性
      • getAttribute(String name, int scope):
      • findAttribute(String name): 从页面范围开始,逐层向上查找(页面、请求、会话、应用)并获取属性值
      • removeAttribute(String name): 从页面范围移除指定的属性
      • removeAttribute(String name, int scope): 从指定范围移除指定的属性
      • getAttributeScope(String name): 返回指定属性所在的范围(PageContext.PAGE_SCOPE、PageContext.REQUEST_SCOPE、PageContext.SESSION_SCOPE 或 PageContext.APPLICATION_SCOPE)
  • exception对象
    • 只有在错误处理页面才可以使用

JDBC

六个步骤:

// 加载并注册数据库驱动
DriverManager.registerDriver(Driver driver);
Class.forname("DriverName");

// 通过DriverManager获取连接
Connection conn = DrivetManager.getConnecter(String url, String user, String pwd);
// url: jdbc:mysql://hostname:port/databasename

// 通过Connection对象获取Statement对象
stmt = conn.createStatement();
preStmt = conn.prepareStatement(String sql);

// 使用Statement对象执行sql语句
// 使用Statement时
ResultSet rs = stmt.executeQuery(sql);
int rs = stmt.executeUpdate(sql);
// 使用prepareStatement时
preStmt.setString(1, "a");
preStmt.setString("name", "a");
preStmt.executeUpdate();
ResultSet rs = stmt.executeQuery();

// 操作ResultSet结果集
while(rs.next()) {
	int id = rs.getInt("id");  // 通过列名获取
	// 或者
	int id = rs.getInt(1);  // 通过索引获取
}

// 关闭连接,释放资源
// 包括ResultSet、Statement、Connection等资源,使用close()方法关闭
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值