学生笔记-----Servlet01
http:(超文本传输协议)
(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上,在传输层(网络的七层协议)不仅仅是可以传输我们的文本,还可以传输 图片,音频,视频等等。是一个简单的请求-响应协议。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直接了当。
HTTPS:安全的超文本传输协议。是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 。目前的系统平台上都使用https来进行我们的传输。
c/s:客户/服务器
b/s:浏览器/服务器
Web开发通过b/s结构完成项目的开发。
建立服务器:http://服务的地址(localhost自己本机或域名(例如:www.baidu.com);ip地址来进行访问) ip地址(外网的地址;就是运营商给你提供的地址; 内网的地址:http://地址;域名:端口号8080 /对应的项目,默认的web端口是80端口; 在他的后边可以不写端口;)
发布Web项目
1.直接使用tomcat
2.eclipse集成tomcat
3.IDEA集成tomcat
Web项目需要连接服务,servlet属于Web项目里的内容。项目发布之后就可以访问。
访问路径:http://localhost:8080/项目名
访问顺序(由大到小):index.html,index.jsp,index.htm,default.html,default.jsp,default.htm
我们通过服务器发布之后,就会把我们的页面文件进行发布出来, 用户就可以直接使用浏览器进行访问。
当我们在页面上进行相关的数据的写入的时候,这个页面要进行数据的提交。提交是需要把数据通过http协议提交给Java后台-----servlet(小的服务程序),他是给我们提供服务; 就是能够接受前端过来的数据; 然后再去调用业务(就是进行不同的操作);业务层去调用dao层(就是进行数据库的操作;进程仓库);然后就可以进行数据操作,最后把结果返回,他是一层一层地返回, dao层返回给我们的业务层;业务层返回给servlet;servlet返回给用户。
类似于顾客(页面)—服务员(servlet)—厨师(业务层)-----仓库(dao层)
Servlet
servlet:能够接受数据,处理数据,调用其他层,完成数据的封装,返回页面。servlet很重要,是框架的底层原理。
Servlet是Java语言编写的应用到web服务端的扩展技术。先于jsp产生。可以方便的对web应用中的http请求进行处理。在web开发中,servlet主要用来处理各种业务逻辑,他更好的表现逻辑层。并且安全性,扩展性以及性能都很好。MVC模式中应用很广。
先有的servlet后有的jsp-----在java的web中servlet是接口,他有实现类,httpservlet-是他的实现类;
Servlet与Java的区别
Servlet封装了http的请求,运行的时候需要servlet的容器。(其实本质上servlet也是一个java代码,不同的是servlet封装我们的http请求, 接收请求和进行相应, 他必须运行在servlet容器(例如tomcat等))
Servlet实质就是一个按照servlet规范的Java类。能够处理http请求。
MVC模型
就是在进行web开发的时候采用分层管理的方式来实现具体的功能。
M—model(模型)对应的是我们的数据库的操作,dao层就是model层;
V—view(视图)就是页面展示,主要就是用来进行我们的页面数据的展示操作;html+css+js ; jsp等。
C—controller(控制)就是当前端发送请求到controller时, 它会根据你的请求进入到不同的业务层操作。
实操
通过web项目进行实际操作:
idea,eclipse创建动态web项目;
一般eclipse在创建过程中,默认不会生成web.xml(手动生成); 因为现在都使用的是注解方式(@)来进行;
我们自己去写的一个index .html在页面上进行数据提交。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户提交数据的页面</title>
</head>
<body>
<center>
<h4>
<!-- 表单提交数据 action表示提交到哪里去 method
表示方法 :get或post-->
<form action="">
<label>用户姓名:</label><input type="text" name="username">
<br>
<label>用户密码:</label><input type="password" name="password">
<br>
<label>电话号:</label><input type="text" name="phone">
<!-- <button type="submit">提交</button> -->
<input type="submit">
</form>
</h4>
</center>
</body>
</html>
1.建立一个UserServlet这个作为后端接受数据的这个操作,让这个类去实现接servlet接口,也可以直接自己去封装。
里边有很多的方法需要我们自己去实现(初始化方法; 销毁方法;服务的方法;获取配置信息的方法; 获取信息方法。
通过xml文件方式来配置我们的servlet 也就是要在你的xml文件中进行注册;
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>web02</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>userservlet01</servlet-name>
<servlet-class>com.zll.servlet.UserServlet</servlet-class>
</servlet>
<!-- 映射 映射时上下名字要对应-->
<servlet-mapping>
<servlet-name>userservlet01</servlet-name>
<!-- 外部要访问的url的地址 -->
<url-pattern>/user</url-pattern>
</servlet-mapping>
</web-app>
package com.zll.servlet;
import java.io.IOException;
import javax.security.auth.message.callback.PrivateKeyCallback.Request;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
//接受前端过来的数据
public class UserServlet implements Servlet{
@Override
public void destroy() {
System.out.println("这个Servlet被销毁了");
}
@Override
public ServletConfig getServletConfig() {
System.out.println("这个Servlet的配置信息被获取了");
return null;
}
@Override
public String getServletInfo() {
System.out.println("这个是获取你的信息的方法");
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("这个Servlet被初始化");
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("当有请求进入到服务中调用");
// 接受前端发过来的数据
String username=req.getParameter("username");
String password=req.getParameter("password");
String phone=req.getParameter("phone");
System.out.println(username+"\t"+password+"\t"+phone);
}
}
2.使用注解方式来进行servlet的实现。
只要在web.xml文件中进行配置,就直接可以访问到,使用url来进行访问,以后前端请求的时候,也是请求到这个url上;
我们请求可以通过三种方式来进行请求我们的servlet。
第一种方式----from 表单的方式;
第二种使用标签的方式来提交数据;
第三种使用我们Ajax 来进行数据的提交;
也就是我们通过三种方式我们可以把数据拿到, 通过http协议发送给后端 url上,因为他们是有一层映射关系; 这个url就会映射到我们的类上,他会去里边有相关的方法,即service这个方法,他可以接收我们的数据; get或post;
Servlet 中几个常见的方法
Init—就是初始化方法;就是当servlet在创建过程中,我们对他进行一些初始的操作。 一般就可以把经常进行操作的数据先拿出来。例: 进行数据库的查询操作,我们要进行用户的登录, 用户会通过页面把数据提交个我们的servlet,这个时候他会去根据web.xml进行映射找到类, 就会创建他的对象,里边有初始化方法。 每次用户在进行登录的时候, 都要查询数据库然后就进行对比; 他们都要对数据进行操作;就比较浪费资源; 所以我们会采用在初始化的时候我们就已经把数据库中的用户都取出来放在集合,在以后对比过程中就不用去操作原始数据库。
Service—这个方法主要完成的是我们的前端各种请求; get,post请求。
Destroy—是销毁的方法,当代码修改, 热部署就会把这个进行关闭, 就是tomcat关闭的时候调用这个方法;一般对资源关闭操作都可以写在这个方法中,以及流的关闭,数据库连接,以及清空我们的数据。
Servlet接收数据:
Request—来接受前端过来的各种请求数据。form表单传过来的数据; a标签过来的数据; ajax过来的;
Request接收数据;req.getParameter(name); 接受过来的所有数据都是 string数据;如果你传递过来的数据需要进行转换,就使用类型转换。
Response—响应,就是前端请求过来之后我们后端处理之后给他的响应。他的作用就是把数据响应到你的页上。
2.使用注解的方式来完成我们的servlet。
3.我们可以使用工具自动生成servlet, 你直接创建的时候就创建servlet。