服务器编程一

1、b/s架构

(1)什么是b/s架构

                客户端使用浏览器,服务端使用web服务器,客户端跟服务器之间使用http协议进行通讯。

(2)有点:

a、客户端不需要单独的安装(因为使用浏览器)

c/s架构比较麻烦的是需要单独安装每个客户端,而且,一旦客户端版本发生改变,就需要再次安装。

b、开发相对简单

c/s架构,需要我们分别在客户端已服务端编写相应的通信处理模块和自定义协议,而b/s架构使用标准的http协议(不需要自定义协议),并且,浏览器和web服务器已经包含了相应的通信模块


2、什么事Servlet?

sun公司制定的一种用来扩展web服务器功能的组件规范。

(1)扩展web服务器功能

早期代表性的服务器:  Apache web server, 微软的iis (这两个服务器中都存在一个缺点,就是不能处理动态的资源,只能处理静态资源   ,静态资源缺点不灵活)

为了让这些web服务器能够处理这些动态资源的请求,需要扩展他们功能。

早期使用CGI技术(common gateway interface),可以使用很多的语言,比如prelude,c等来开发CGI程序,但是cgi程序有几个问题

a、开发比较复杂(需要程序员自己去分析请求参数)

b、性能差

c、可移植性差,依赖cgi平台

           (2)组件规范

3、安装tomcat(网上有很多)

Servlet容器也可以作为一个简单的web服务器来使用。

4、如何写一个Servlet?

step1 ,先写一个Java类,实现Servlet接口或者继承HttpServlet抽象类

step2,编译

step3、打包

即创建一个具有如下结构的文件夹

appname(应用名)

WEB-_NF

classes(.class文件)

lib(.jar文件)

web.xml(.class文件)

step4、部署

将step3创建的文件夹拷贝到Servlet容器特定的文件夹下面。

注意:也可以将step创建的文件夹使用jar命令进行压缩,生成.war为后缀的文件,然后拷贝。

step5、启动Servlet容器,访问Servlet。

http://ip:port/appname/url-pattern



5、Servlet是如何运行的?

比如,在浏览器地址栏中输入:http://ip:port/web01/hello

step1、浏览器依据ip、port建立与Servlet容器之间的连接

step2、浏览器将请求数据打包(按照HTTP协议的要求,将相关的数据封装成一个数据包,一般称之为请求数据包)并发送到Servlet容器。

step3、Servlet容器解析请求数据包,并将解析之后得到的数据放到request对象上。同时,容器还要创建一个response对象。

step4、Servlet容器依据请求资源路径(web01\hello)找到Servlet的配置,然后创建Servlet对象

step5、Servlet容器接下来调用Servlet对象的service方法,并且会将事先创建好的request对象和response对象作为service方法的参数传递给Servlet对象

step6、Servlet可以通过request对象获得请求参数,进行相应的处理,然后将处理结果写到response对象上。

step7、容器读取response对象上的数据,然后将处理结果打包(响应数据包)并发送给浏览器。

step8,浏览器解析响应数据包,将返回的数据



package web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorldServlet  extends HttpServlet{
	public void service(HttpServletRequest request,HttpServletResponse response)
	throws ServletException ,IOException{
		//设置一个消息头content-type,告诉浏览器返回的数据类型是html文档。
		response.setContentType("txt/html");
		//获得一个输出流
		PrintWriter out = response.getWriter();
		out.println("<span style = 'color:red;font-size:30px;'>" +
				"HEllo  word</span>");
		out.close();
		
		
	}
	

}

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet> 
  	<servlet-name>helloWorld</servlet-name>
  	<!-- 类名要完整(包名,类名都得有) -->
  	<servlet-class>web.HelloWorldServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>helloWorld</servlet-name>
  	<url-pattern>/hello</url-pattern>
  
  </servlet-mapping>
</web-app>

常见问题解决方式

(1)404

404是一个状态码(是一个三位数,有服务器发送给浏览器,告诉浏览器是否正确地处理了请求),404的意思是说:服务器根据请求资源路径,找不到相应的资源。

解决:

a、依据http://ip:port/appname/url-pattern检查你的地址是否正确。

b、仔细检查web.xml,特别要注意Servlet-name是否一致。

(2)500

500的意思是说:服务器处理出错,一般是因为程序运行出错。

解决:

a、检查程序代码

b、配置文件出错,xml文件中的类名要填写正确

(3)405

405服务器找不到相应的service方法。

解决: 检查service方法的签名(方法名,参数类型,返回类型,异常类型)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值