
C/S架构
Client 客户端/Server服务器
Clinet客户端需要独立开发,要下载后独立安装
页面效果好,安全性高,体验感很好
需要移植(不同的系统要开发不同的版本),成本大
使用http进行通信,也可以使用socket进行通信
就是需要独立开发客户端的,比如英雄联盟,永劫无间这种类型的
B/S架构
Brower浏览器/Server服务器
利用已经存在的浏览器,在原有的基础上进行内容开发
成本低,适用性强,体验感和安全性一般
使用http进行通信,也可以使用wenSocket进行通信
java web开发主要使用的架构
服务器开发如何开发一个服务器
要掌握各种多线程开发的技巧
需要了解各种协议的解析
服务器的适用范围广
Tomcat 的使用去tomcat官网下载 http://tomcat.apache.org/
建议使用8或9的版本
解压到一个非中文目录的文件夹下
bin:二进制可执行文件目录
conf:配置文件目录
lib:库文件目录
logs:日志文件
temp:临时文件
webapps:部署项目问题
work:运行过程中使用的目录
启动tomcat服务器
在Windows下使用startup.bat启动服务器
在linux下使用startup.sh启动服务器
关闭tomcat服务器
在Windows下使用shutdown.bat关闭服务器
在linux下使用stutdown.sh关闭服务器
访问服务器
通过http;//localhost:8080/访问服务器
将开发完毕的项目,部署到webapps目录,这样就可以使得其他用户访问到
什么是urlurl: uniform resoutce location可以通过url访问到服务器上的资源或源码
浏览器和服务器之间主要通信方式就是通过url进行连接
所有资源包括代码都是放在服务器端,浏览器主要通过url访问到对应的资源
url的基本格式:http://localhost:8080/项目名称/映射路径
Servlet概述
Servlet是java EE的一个接口,提供浏览器和服务器java代码的通信功能
Tomcat是对Servlet实现一种web容器
servlet可以对浏览器的请求进行处理,并且将操作的结果返回给浏览器
Request获取浏览器请求
Response返回结果给浏览器
基本使用创建一个继承Servlet的类
重写servlet方法,用于对浏览器的请求和响应进行操作
两种注册的方法
1在web.xml中注册
TestServlet
com.java2022.first.servlet.TestServlet
TestServlet
/test
2通过@WebServlet注解进行注册
@WebServlet(urlPatterns = "/login")
public class LoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("进入到登录方法");
}
}
Servlet的生命周期
Servlet在tomcat中是单例模式,在servlet第一次被调用时调用
init()方法是在servlet被创建的时候调用,只能被调用一次
可以设置loadOnstartup使得servlet在tomcat启动的时候就被创建
Service()是servlet每次被访问的时候调用的方法,在整个生命周期过程中会被调用多次
destory()是servlet在被销毁的时候调用.即tomcat服务器在关闭时调用
Reques和Response实现登录案例
在html页面创建一个登录表单
登录页面
在servlet中对表单进行处理和响应
@Override
protected void service(
HttpServletRequest req, //请求都会被封装在request中
HttpServletResponse resp) throws ServletException, IOException {
//1,获取前端提交的数据
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println("用户名:"+username+",密码:"+password);
boolean isOk = false;
//2, 处理业务逻辑
if(password.equals("123")){
isOk = true;
}
//3,返回结果
resp.setCharacterEncoding("utf-8"); //设置返回的编码
resp.setContentType("text/html"); //指定返回的格式是html
if(isOk){
resp.getWriter().write("登录成功");
}else{
resp.getWriter().write("登录失败");
}
}
http协议
http协议是应用层中,用于web通信主要的一个协议
两个环节
请求request:把浏览器中的数据封装在http协议中发送给服务器端
响应response:把服务器的数据封装在http协议中发送给浏览器端
四个部分
请求行
头部(head)
空行
正文(body)
在servlet可以通过request对请求头和请求正文进行操作
String username = req.getParameter("username");
String password = req.getParameter("password");
//从请求头中获取参数
String userAgent = req.getHeader("User-Agent");
System.out.println("User-Agent:"+userAgent);
也可以通过response在响应头和正文中写入内容
//3,返回结果
//在响应头中写入内容
resp.setHeader("token","xxxxx");
resp.setCharacterEncoding("utf-8"); //设置返回的编码
resp.setContentType("text/html"); //指定返回的格式是html
if(isOk){
//在正文中写入
resp.getWriter().write("登录成功");
}else{
resp.getWriter().write("登录失败");
}
四种请求方式
get:主要从服务器端获取数据,是浏览器访问服务器的默认方式
post:主要是向服务器发送数据,用于新增操作,需要手动设置
put:主要用于数据更新
delete:主要用于删除数据