文档库 最新最全的文档下载
当前位置:文档库 › java_servlet_day02

java_servlet_day02

java_servlet_day02
java_servlet_day02

知识点列表

编号名称描述级别

1 http协议是什么?对超文本协议有基本了解*

2 通讯的过程了解通讯的过程*

3 数据包的结构了解并掌握基本的数据包的结构*

4 MyEclipse工具演示:TCP/IP

Monitor

了解MyEclipse提供的抓包工具

*

5 如何获得请求参数值掌握表单处理中如何获取请求参数**

6 如何处理表单中的中文(难点)重点掌握表单处理中的中文乱码解决方案,***

7 MySql安装步骤了解MySql数据库的下载与安装是注意事项*

8 mysql的简单使用掌握Mysql数据库的基本操作,学习并掌握与

Oracle数据库之间基本用法的一些差异。

*

9 访问数据库步骤重点掌握,如何利用Servlet访问数据库。** 注:"*"理解级别"**"掌握级别"***"应用级别

1.知识点回顾

什么是servlet?

用于扩展web服务器功能的组件与规范。

扩展web服务器功能?

让服务器能够生成动态的页面

Servlet是一种组件和规范?

Servlet写好后可以在任何服务器上运行,但是有个前提,要求服务器必须遵守这些组件规范。

Servlet运行图

在程序开发过程中,我们只需要注意(7.1)从Request对象中访问参数、(7.2)将处理结果放置到Response对象中、(7.3)HelloServlet实例处理这三部分即可。

2.http协议(了解)

2.1.http协议是什么? *

超文本传输控制协议(hypertext transport protocal)。是一种应用层协议,定义了浏览器(也可以是其它程序)与web服务器之间通讯的过程与数据的格式。

2.2.通讯的过程*

1)浏览器向服务器发送建立连接的请求。

2)浏览器先将请求数据打包,向服务器发送请求。

3)服务器处理完请求,然后将数据打包,发送给浏览器。

4)服务器发送完数据,并闭连接。

如果浏览器要向服务器再次发送请求,需要重新建立连接。也就是说,浏览器与服务器之间的连接,只能处理一次请求,然后立即关闭。这种通讯方式,可以让服务器以有限的资源为更多的客户端服务。

2.3.数据包的结构*

1)请求数据包的结构

第一部分:请求行(数据包中的一行内容)

请求行包括三部分内容:

?请求方式(get/post)

?请求资源路径(端口号之后的内容,比如/appname/servlet)

?协议的类型与版本

第二部分:若干消息头(消息头是由w3c定义的一些有特殊含义的键值对)

消息头的样式,比如: content-type= text/html;

服务器和浏览器都会遵守这些消息头的约定。

消息头一般由服务器或者浏览器自动生成,但是也可以通过编程的方式生成第三部分: 实体内容

如果请求方式是post方式,请求参数及值会放在这儿。

如果请求方式是get 方式,请求参数与值是包含在请求资源路径里面。

2)响应数据包的结构

第一部分:状态行

协议的类型与版本

状态码(状态码是一个数字,不同的数字代表

不同的含义,比如

?500: 系统错误(即程序代码有误)

?404: 找不到资源(访问路径错误)

?200: 正确

状态码的描述

第二部分:若干消息头

第三部分: 实体内容

服务器返回给浏览器的处理结果

2.4.MyEclipse工具演示:TCP/IP Monitor *

TCP/IP Monitor相当于一个代理服务器。

代理服务器原理

步骤1

新建web02工程

步骤2(可选)

MyEclipse小技巧(定制创建的文件模板)

1)“Customize Perspective”选项

2)选择你需要的模板(此处我需要HTML Basic Templates)

3)新建文档时就可以找到你定制的模板类型了

步骤3

在WebRoot下新建addEmp.html

步骤4

编辑addEmp.html

说明

使用MyEclipse的HTML Basic Templates生成的HTML模板样式如下

?在正式开发时是必须加上的;学习练习时则可加可不加?标记必须加上,这是一种规范写法,后续会讲

步骤5

部署应用并访问addEmp.html

步骤6

打开TCP/IP Monitor

步骤7

在“TCP/IP Monitor”视图空白处点击右键,出现“Properties”

步骤8

出现对话框点击“Add”按钮

步骤9

增加新的监视器

步骤10

点击“Start”启动代理服务器,“OK”

步骤11

访问地址栏输入“http://localhost:8888/web02/addEmp.html”

步骤12

查看数据包内容

显示内容说明

1)AddEmpServlet.java

2)addEmp.html

3.get/post请求***

1)哪一些是get请求

?在浏览器地址栏直接输入一个地址。

?表单默认的提交方式。

?点击链接

2)哪一些是post请求

?给表单设置method="post"。

3)get/post方式的区别

?get方式会将请求参数及参数值放在请求资源路径里面,携带的数据大小有限制,不适合提交大量的数据;post方式会将请求参数及参数值放在实体内容里面,理论上没有限制,

适合大量数据的提交。

?安全上来讲,post方式相对安全(因为请求参数及值存放在实体内容里面,而get方式会将请求参数及值显示在浏览器地址栏)。但是要注意,post方式并没有将数据加密。

【案例1】提交方式演示**

1)addEmp.html

content="text/html; charset=utf-8">

addEmp

添加雇员

姓名:

薪水:

年龄:

2)AddEmpServlet.java

package web;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class AddEmpServlet extends HttpServlet{

public void service(HttpServletRequest request,

HttpServletResponse response)

throws ServletException,IOException{

String name = request.getParameter("name");

double salary = Double.parseDouble(

request.getParameter("salary"));

int age = Integer.parseInt(

request.getParameter("age"));

System.out.println("name:" + name);

System.out.println("salary:" + salary);

System.out.println("age:" + age);

}

}

3)web.xml

xmlns="https://www.wendangku.net/doc/0b17774108.html,/xml/ns/j2ee"

xmlns:xsi="https://www.wendangku.net/doc/0b17774108.html,/2001/XMLSchema-instance"

xsi:schemaLocation="https://www.wendangku.net/doc/0b17774108.html,/xml/ns/j2ee

https://www.wendangku.net/doc/0b17774108.html,/xml/ns/j2ee/web-app_2_4.xsd">

addEmpServlet

web.AddEmpServlet

addEmpServlet

/add

结果演示

1)访问addEmp.html

2)使用get方式提交

get方式会将请求参数及参数值放在请求资源路径里面

携带的数据大小有限制,不适合提交大量的数据

3)使用post方式提交

post方式会将请求参数及参数值放在实体内容里面,理论上没有限制,适合大量数据的提交

4.表单处理***

4.1.如何获得请求参数值**

1)String request.getParameter(String paraName);

要注意的问题: 如果paraName与实际的请求参数名不一致,则返回null。

如果没有输入参数值,则返回""。

2)String[] request.getParameterValues(String paraName);

用在有多个请求参数名相同的情况下使用。

比如?interest=fishing&interest=cooking

演示1

如果paraName与实际的请求参数名不一致,则返回null;

1)web.xml

2)AddServlet.java

3)控制台打印

演示2

如果没有输入参数值则返回空字符串1)姓名为空

相关文档