JavaWeb_Servlet复习
文章目录
- JavaWeb_Servlet
- C/S架构:Client Server
- 缺点
- 优点
- B/S架构:brower/server
- 优点
- 缺点
- B/S架构发展:
- java web:为什么使用java语言编写web程序
- javaEE:就是javaweb
- JAVAEE主要体系底层语言:
- 1.Servlet
- 2.JSP
- 网络传输相关知识:
- Servlet生命周期:
- service可以接受任何类型的请求
- 1.get
- 2.post
- 以下三种浏览器发不出,需要借助其他方式
- 常用方法:
JavaWeb_Servlet
C/S架构:Client Server
缺点
1.需要安装庞大的客户端
2.升级、维护、安装、部署都不方便。
优点
性能
B/S架构:brower/server
优点
1。无需本地安装客户端,仅需浏览器即可
2.升级是在服务端升级,用户无感知,移动办公方便
缺点
性能要弱于C/S架构,百ms级。企业级办公应用来说可以接受。
B/S架构发展:
asp,php,漏洞多,民用多企业少
Java
c#
python
…
java web:为什么使用java语言编写web程序
1.java语言,严谨,易读,健壮,简单
2.面向对象。庞大的类库,社区活跃。很多语言使用JVM。
3.国内,java一家独大。
javaEE:就是javaweb
java分三个版本:1.2开始划分
1.javaSE:standard Edition 标准版
2.javaEE:Enterprise Edition专业版
3.javaME:Micro Edition 已经消亡-- ios和安卓
java强项: 编写web程序
JAVAEE主要体系底层语言:
1.Servlet
接收http请求,并进行响应的网络组件,使用java语言编写
2.JSP
本质上就是servlet,只不过更方便html编写
网络传输相关知识:
HTTP:网络协议,应用层协议
tcp/ip:传输层协议
应用层 ->表示层->会话层->传输层->网络层->链路层->物理层
服务器:
1.tomcat,weblogic,websphere,glassfish,jetty,wildfly…
maven:依赖管理
Servlet生命周期:
1.普通的servlet在第一次请求时创建
2.调用init函数进行初始化
3.持续对提供服务
4.当tomcat服务器关闭时,servlet销毁
service可以接受任何类型的请求
1.get
使用频率最高,除了post之外的全部是get请求,比如:浏览器地址栏,超链接,link标记,script请求,image请求,iframe。
传递参数只能写在地址之后,?a=b&c=d&e=f
传递的参数容量有限,且是明文
2.post
使用频率最高,只能通过form表单来提交
传递数据容量无限,隐式传输
以下三种浏览器发不出,需要借助其他方式
3.put:
4.patch:
5.delete
6options 使用频率很低
7.head几乎不用
8trace 几乎不用
常用方法:
1.getMethod
获取请求的类型
2.getServletPath
获取请求路径
3.getContextPath
获取上下文路径
4.getRequestURL
统一资源定位符
5.getRequestURI
统一资源描述符
6.getPathInfo
只有@WebServlet("/hello/")中出现时有效,返回*代表的地址
7.getQueryString
查询参数,请求地址栏问号后面的内容
8.getParameter(“xxx”)
获取地址栏xxx的内容
9setCharacterEncoding(“UTF-8”)
给请求对象和响应对象设置字符集
package com.ysy;import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/hello/*")
public class HelloWorldServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取请求的类型String method = req.getMethod();System.out.println("getMethod:"+method);//getMethod:GET//获取请求路径String servletPath = req.getServletPath();System.out.println("getServletPath:"+servletPath);//getServletPath:/hello//获取上下文路径String contextPath = req.getContextPath();System.out.println("getContextPath:"+contextPath);//getContextPath:/demo01_war_exploded//4.URL 统一资源定位符StringBuffer sb = req.getRequestURL();System.out.println("getRequestURL:"+sb);//getRequestURL:http://localhost:8080/demo01_war_exploded/hello//5.统一资源描述符String requestURI = req.getRequestURI();System.out.println("getRequestURI:"+requestURI);//getRequestURI:/demo01_war_exploded/hello//6.只有@WebServlet("/hello/*")中出现*时有效,返回*代表的地址String pathInfo = req.getPathInfo();System.out.println("getPathInfo:"+pathInfo);//返回*代表的地址//7 查询参数,请求地址栏问号后面的内容String queryString = req.getQueryString();System.out.println("getQueryString:"+queryString);//getQueryString:name=ysy//8从地址栏问号后返回内容里找到匹配字符串=的内容String name = req.getParameter("name");String pwd = req.getParameter("pwd");System.out.println("name:"+name+"pwd:"+pwd);//name:ysypwd:123//9给请求对象和响应对象设置字符集req.setCharacterEncoding("UTF-8");resp.setCharacterEncoding("UTF-8");//设置响应内容的内容resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();out.println("<h1> 你好,我是Servlet</h1>");out.println("<form method=\"post\" action=\"/hello\"><input type='text' name='age' value='100'><button type='submit'>提交</form>");out.flush();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String method = req.getMethod();System.out.println(method);resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();out.println("<h1>接收到Post请求</h1>");out.flush();}}
Stringbuffer:内容是可变的
String内容不可变,只是改引用