CSBS结构与servlet

一.CS/BSl两种结构模式
1.CS(Client/Server):客户端----服务器结构
优点:用户体验好根据客户需求有多样的图形界面,相对BS安全,响应速度快
缺点:兼容性差,开发维护成本高,用户群稳定
2.BS(Browser/Server):浏览器----服务器结构
优点:客户端无需维护,维护方便,开发简单
缺点:响应速度较慢, 客户端服务器端的交互是请求-响应模式,通常动态刷新页面,响应速度明显降低(Ajax可以一定程度上解决这个问题)。无法实现分页显示,给数据库访问造成较大的压力
二.通讯条件
1.需要有服务器端(server) :等待被请求,需要暴露ip 和 port
2.需要有客户端(client):主动发起请求 ,知晓服务端的ip 和 port
3.通信规则(协议):TCP/IP协议
三. Tomcat
Tomcat 是一个符合 JavaEE WEB 标准的最小的 WEB 容器,所有的 JSP 程序一定要有 WEB 容器的支持才能运行,而且在给定的 WEB 容器里面都会支持事务处理操作
HTTP请求: HTTP 请求 http 请求由三部分组成,分别是:请求行、请求头、请求正文
四.Servlet
 1)servlet实现:创建web项目,新建类(继承HTTPServlet),实现sevrlet规范,重写service方法,配置wev XMl(设置对外访问路径),发布项目启动服务
2)请求常用方法
例子:1.String url = request.getRequestURL() + “”;
System.out.println(“获取请求的完整路径:” + url);
2.获取请求的部分路径 (从端口后"?“前面)
String uri = request.getRequestURI();
System.out.println(“获取请求的部分路径:” + uri);
3.获取请求的参数字符串 (从”?"开始到最后)
String queryString = request.getQueryString();
System.out.println(“获取请求的参数字符串:” +queryString);
4.获取请求类型 (GET/POST)
String method = request.getMethod();
System.out.println(“获取请求类型:” + method);
5.获取请求协议版本
String p = request.getProtocol();
System.out.println(“获取请求协议版本:” + p);
6.获取站点名
String contextPath = request.getContextPath();
System.out.println(“获取站点名:” + contextPath);

System.out.println("获取请求头");
	   7.获取指定请求头
	     String host = request.getHeader("host");
	     System.out.println("Host:" + host);
	   8.获取所有请求头的名称枚举集合
Enumeration<String> enumeration = request.getHeaderNames();
	    while(enumeration.hasMoreElements()) {
		System.out.println(enumeration.nextElement());
	    }
	   9.System.out.println("获取请求的参数");
	   10.获取指定名称的参数值
	     String uname = request.getParameter("uname");
	     String upwd = request.getParameter("upwd");
System.out.println("用户名:" + uname + ",用户密码:" +upwd);
	    11.获取指定名称的参数的所有值
String[]hobbys=request.getParameterValues("hobby");
	       判断并遍历
	      if (hobbys != null && hobbys.length > 0) {
	   	for (String hobby : hobbys) {
			System.out.println("爱好:" + hobby);}}
 3)请求乱码问题:
   1.乱码原因:由于现在的 request 属于接收客户端的参数,所以必然有其默认的语言编码,主要是由于在解析过程中默认使用的编码方式为 ISO-8859-1(此编码不支持中文),所以解析时一定会出现乱码。要

POST请求 GET请求
Tomcat8乱码 Tomcat7乱码
Tomcat7乱码 Tomcat8不会乱码
2.解决POST请求乱码:
request.setCharacterEncoding(“UTF-8”); // 设置服务器的编码方式,该方式只对post请求生效,如果是get请求没有任何效果newString(request.getParameter(name).getBytes(“ISO-8859-1”),“UTF-8”);
3.解决GET请求乱码:(如果原来不乱码,通过new String()去处理,会出现另外一种乱码)newString(request.getParameter(name).getBytes(“ISO-8859-1”),“UTF-8”);
4)自动跳转刷新
例: response.setHeader(“refresh”, “2”); // 2秒刷新一次
response.setHeader(“refresh”,“2;URL=http://www.baidu.com”); // 2秒钟后跳转到百度
5)数据响应:
1.getWriter()获取字符流(只能响应回字符);
2.getOutputStream()获取字节流(能响应一切数据)。
响应回的数据到客户端被浏览器解析。
注意:两者不能同时使用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值