时间:20100915学习

一、get or post?

We can send data to the data processing page by both the GET and POST methods of a form. Both methods are used in form data handling where each one has some difference on the way they work. We will discuss some of the differences.

As you have seen there is a character restriction of 255 in the URL. This is mostly the old browsers restriction and new ones can handle more than that. But we can't be sure that all our visitors are using new browsers. So when we show a text area or a text box asking users to enter some data, then there will be a problem if more data is entered. This restriction is not there in POST method.

In GET method data gets transferred to the processing page in name value pairs through URL, so it is exposed and can be easily traced by visiting history pages of the browser. So any login details with password should never be posted by using GET method.

As the data transfers through address bar ( URL ) there are some restrictions in using space, some characters like ampersand ( & ) etc in the GET method of posting data. We have to take special care for encoding ( while sending ) and decoding ( while receiving ) data if such special characters are present.

There are some special cases where advantage of using GET method is , one can store the name value pairs as bookmark and directly use them by bypassing the form.

 

二、URL解析

  1. 协议
  2. 服务器:所请求的物理服务器的唯一名字,这个名字映射到一个唯一IP地址
  3. 端口:URL这一部分是可选的,一个服务器可以支持多个端口。一个服务器应由一个端口标识。如在URL中无指定端口,默认为80,这正是web服务器的默认端口。
  4. 路径:请求的资源在服务器上的路径。这是一个UNIX格式的路径,因为早期的web服务器采用UNIX系统。
  5. 资源:请求的内容名字。

三、端口

  1. TCP端口就是一个数字而已。
  2. 这是一个16位的数,标识服务器硬件上一个特定的软件程序。
  3. Internet Web(HTTP)服务器软件在端口80上运行,这是一个标准。
  4. Telnet服务器在23端口运行
  5. FTP在21端口上运行。
  6. POP3邮件服务器在37上。
  7. SMTP---25
  8. HTTPS---443
  9. 服务器上有65536个端口(0-65535),而0-1023的TCP端口号已经保留,由一些知名的服务使用,你自己定制的服务器程序不要使用这些端口。

四、一个小小的SERVLET编写,编译,部署,运行过程:

  1. 建立一个开发源码以及编译的目录结构:
  2. src用来放置源文件;classes放置编译好的.class文件;etc放置配置文件web.xml
  3. 编写一个简单的servlet,放在目录p\src\com\test下(也可以直接放在目录\src下)
    package com.test;
    
    public class Ch1Servlet extends javax.servlet.http.HttpServlet {
    	public void doGet (javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {
    	java.io.PrintWriter out = response.getWriter();
    	java.util.Date now = new java.util.Date();
    	
    	out.println("<h1 align='center'> CurrentTime is: " + now + "</h1>");
    }
    
    }
     
  4. 编译文件.class应该放到目录“\classes”下
  5. 在目录“\etc”下编写配置文件web.xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
       version="2.5">
    
    <Servlet>
    	<Servlet-name>test1.do</Servlet-name>
    	<Servlet-class>com.test.Ch1Servlet</Servlet-class>
    </Servlet>
    
    <Servlet-mapping>
    	<Servlet-name>test1.do</Servlet-name>
    	<url-pattern>/test1.do</url-pattern>
    </Servlet-mapping>
    
    </web-app>
    
     
  6. 至此,完成编写编译阶段,进入部署阶段。在TOMCAT的目录“\webapps”下部署如下目录:
  7. 将源文件开发阶段的目录“\classes\”下的所有目录拷到部署目录“\classes\”下。
  8. 新建的web.xml放到部署目录“\WEB-INF\”下
    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
       version="2.5">
    
    <Servlet>
    	<Servlet-name>test1.do</Servlet-name>
    	<Servlet-class>com.test.Ch1Servlet</Servlet-class>
    </Servlet>
    
    <Servlet-mapping>
    	<Servlet-name>test1.do</Servlet-name>
    	<url-pattern>/test1.do</url-pattern>
    </Servlet-mapping>
    
    </web-app>
    
     
  9. 开启tomcat,即可在浏览器端输入“http://localhost:8080/p/test1.do”访问编写的“Ch1Servlet.class”这个servlet了。
资源下载链接为: https://pan.quark.cn/s/67c535f75d4c C语言作为一门基础且强大的编程语言,在底层系统编程和算法实现方面表现卓越,其效率与灵活性备受推崇。其中,“用指针实现的C语言排序算法”这一主题,融合了C语言的核心概念——指针,以及数据结构和算法的基础知识。指针是C语言的一大特色,它能够直接操作内存地址,从而为高效的数据操作提供了有力支持。在排序算法中,指针通常被用作迭代工具,用于遍历数组或链表,进而改变元素的顺序。 常见的排序算法,如冒泡排序、选择排序、插入排序、快速排序和归并排序等,都可以借助指针来实现。具体而言: 冒泡排序:通过交换相邻元素来实现排序。在C语言中,可以定义一个指向数组的指针,通过指针的递增或递减操作来遍历数组,比较相邻元素并在必要时进行交换。 选择排序:每次从剩余部分中找到最小(或最大)元素,然后将其与第一个未排序的元素进行交换。指针可用于标记已排序和未排序部分的边界。 插入排序:将元素插入到已排序的部分,以保持有序性。可以使用指针跟踪已排序部分的末尾,并在找到合适位置后进行插入操作。 快速排序:采用分治策略,选择一个“基准”元素,将数组分为两部分,一部分的所有元素都小于基准,另一部分的所有元素都大于基准。这一过程通常通过递归来实现,而基准元素的选择和划分过程往往涉及指针操作。 归并排序:将数组分为两半,分别对它们进行排序,然后再进行合并。在C语言中,这通常需要借助动态内存分配和指针操作来处理临时数组。 在实现这些排序算法时,理解指针的用法极为关键。指针不仅可以作为函数参数传递,从而使排序算法能够作用于任何可寻址的数据结构(如数组或链表),而且熟练掌握指针的解引用、算术运算和比较操作,对于编写高效的排序代码至关重要。然而,需要注意的是,尽管指针提供了直接操作内存的便利,但不当使用可能会引发错误,例如内存泄漏、空指针
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 在电子设备设计中,多功能按键的实现是至关重要的技术,它能够为用户提供丰富多样的交互方式,比如单击、双击和长按等操作。本文将深入探讨如何设计一个多功能按键系统,涵盖按键识别逻辑、接口函数设计,以及如何避免使用定时器。 首先,我们需要理解多功能按键的基本原理。在硬件层面,按键通常是通过连接到微控制器(MCU)的一个输入引脚来实现的。当按键未被按下时,该引脚保持高电平;而当按键按下时,引脚会与地短路,变为低电平。因此,通过检测该引脚的状态,就可以判断按键是否被按下。 接下来,我们来探讨如何识别不同的按键操作。单击是最基本的操作,通常定义为按键快速按下并释放。双击则是在短时间内连续两次单击,而长按则是按键被按下并持续一段时间。为了实现这些功能,我们需要在软件中加入一些延时处理。例如,当我们检测到按键按下事件后,可以启动一个短暂的延时。如果在此期间再次检测到按键按下,则判断为双击;如果延时结束仍未检测到第二次按下,则认为是单击。对于长按操作,可以设定一个较长的延时,如果按键在这段时间内一直保持按下状态,则识别为长按。 接口函数设计是软件工程中的重要环节。对于多功能按键,我们可以设计以下核心接口: void Key_Init(void):初始化按键,设置中断或轮询模式,并设置初始状态。 uint8_t Key_Scan(void):扫描按键状态,返回当前按键的操作类型,例如,0表示无操作,1表示单击,2表示双击,3表示长按。 void Key_Callback(uint8_t key_event):这是一个注册的回调函数,根据Key_Scan()返回的事件类型执行相应的操作。 在实际应用中,为了避免频繁的中断请求和降低功耗,我们有时会选择使用延时而非定时器。延时函数可以通过循环计数实现,例如,使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值