1 B/S concept
B/S结构(Browser/Server结构)结构即浏览器和服务器结构。
它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。
2 How to develop a WebApp.
1)WebApp的组成(符合JAVAEE规范).
2)例子.
firstWeb(webroot)
/WEB-INF/web.xml
/index.html
/student.html
3) 部署到应用服务器.
通过url访问:
http://localhost:8080/firstWeb/
or
http://127.0.0.1:8080/firstWeb/
思考:通过url访问index.html和直接用浏览器打开index.html文件效果一样么?
其过程有何差别?
3 HTTP introduction.
HTTP(Hyper Text Transfer Protocol)是超文本传输协议的缩写,
它用于传送WWW方式的数据。HTTP协议采用了请求/响应模型。
客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、
以及包含请求修饰符、客户信息和内容的类似于 MIME的消息结构。
request:
<!--start-->
GET /firstWeb/ HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
If-Modified-Since: Fri, 11 May 2007 03:46:02 GMT
If-None-Match: W/"216-1178855162000"
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: 127.0.0.1
Connection: Keep-Alive
<!--end-->
服务器以一个状态行作为响应,相应的内容包括消息协议的版本,
成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
response:
<!--start-->
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"216-1178955948000"
Last-Modified: Sat, 12 May 2007 07:45:48 GMT
Content-Type: text/html
Content-Length: 216
Date: Sat, 12 May 2007 07:45:56 GMT
<html>
<head>
<title>Welcome to SD0702 HomePage</title>
</head>
<body>
<center>
<h1>
<font color="blue">
Welcome to SD0702...
</font>
</h1>
</center>
</body>
</html>
<!--end-->
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
(具体代码含义参看http代码对照表)
4 Servlet introduction.
1) 什么是Servlet
Servlet是用Java编写的Server端程序,它与协议和平台无关。是服务器端的组件。
只能在容器内运行,有自己的生命周期(当然可以给servlet一个main方法,
然后在客户端运行。这是servlet失去了它原有的意义,退化成了一个普通的Java类)。
a) 高效
CGI:进程(开销大,共享资源不方便)
Servlet:线程(开销小,共享资源方便)
b) 方便
Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、
读取和设置HTTP头、处理Cookie、跟踪会话状态等。
c) 功能强大
在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。
例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。
Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。
d) 可移植性好
Servlet用Java编写
Servlet: java class, 接收HttpRequest, 生成HttpResponse(生成动态页面)
2) 如何开发Servlet
a) Servlet class有特定的继承关系
interface: Servlet javax.servlet.*)
class: GenericServlet (javax.servlet.*)
class: HttpServlet (javax.servlet.http.*)
GenericServlet implements Servlet
HttpServlet extends GenericServlet
Http POST,GET,...
HttpServlet doPost(),doGet(),...
GenericServlet service()
b) 实现特定的生命周期方法
init(), init(ServletConfig config)
service(HttpServletRequest request, HttpServletResponse response)
destroy()
c) 例子:
需要导入的包
import javax.servlet.*;
import javax.servlet.http.*;
public class ConcreteServlet extends HttpServlet{
init(){}
service(HttpServletRequest request, HttpServletResponse response){}
destroy(){}
}
HelloServlet.java
功能:
标题:Welcome to SD0702 HomePage
内容:居中显示 Hello our friends,today is (current date),
Welcome to visit our HomePage.
firstWeb
/WEB-INF/web.xml
/WEB-INF/classes/HelloServlet.class
http://localhost:8080/firstWeb/hello
d)如何部署一个包含了Servlet的Web应用
I 建立特定的目录结构(Done)
II 编写Servlet源文件(Done)
III 编译Sevlet,并将class文件放到/WEB-INF/classes位置(Done)
IV 修改web.xml,增加Servlet的描述信息(remained step)
<servlet>
<servlet-name>helloServlet</servlet-name> --->Servlet name
<servlet-class>HelloServlet</servlet-class> --->Servlet class的位置
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name> -->Servlet name(has been defined)
<url-pattern>/hello</url-pattern> -->Access the servlet thru url pattern
</servlet-mapping>
--->Servlet的映射名,Browser通过此名字来访问Servlet
V 将整个应用目录复制到%TOMCAT_HOME%/webapps/下,Tomcat自动激活应用。
3) 使用Servlet接收用户输入信息
a)通过表单(form)提交数据
<form action="login" method="POST" enctype="multipart/form-data">
action: 表单提交给服务器的哪个资源处理
method: 提交方式 "POST","GET"等
GET---->通过URL提交表单信息,由于受到URL长度的限制,只能传递大约1024字节。
<!--get方法提交表单-->
GET /guessWeb/guess?answer=abc×=&luckNo= HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://localhost:8090/guessWeb/
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: 127.0.0.1
Connection: Keep-Alive
<!--end-->
POST--->通过Http Body提交表单信息,传输的数据量大,可以达到2M。
<!--post方法提交表单-->
POST /guessWeb/guess HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1:8090/guessWeb/index.html
Content-Type: application/x-www-form-urlencoded
Content-Length: 25
answer=abc×=&luckNo=
<!--end-->
enctype: multipart/form-data 通常可用于上传文件
例:
//表单通过GET方法(默认)提交给login映射的资源处理
//login为在web.xml中配置的url-pattern或者是jsp文件等
<form action="login">
student name:<input type="text" name="name"/>
<br>
student age:<input type="text" name="age"/>
<br>
student nick:<input type="text" name="nick"/>
<br>
<input type="text" name="nick"/>
<br>
<inut type="submit" value="submit"/>
</form>
b)如何在服务器端获得表单提供的数据
I request对象
HttpServletRequest对象由Web Container封装用户Http请求数据报而成,
可通过它获得所有跟用户请求数据报相关的信息。
getProtocol():String
getMethod():String
getRemoteHost():String
getRemotePort():int
getHeader():String
getParameter(String name):String
返回指定输入参数(名为name)的值
getParameterValues(String name):String[]
返回指定输入参数(名为name)的所有值
getParameterNames():Enumeration
返回请求对象中全部输入参数的名称
例:
String name=request.getParameter("name");
String age=request.getParameter("age");
String[] nicks=request.getParameter("nick");
II 解决Servlet中的中文乱码问题:
<1>静态中文信息乱码
response.setContentType("text/html; charset=gbk");
<2>中文输入乱码
a request.setCharacterEncoding("gbk");(解决post方法提交表单中文乱码问题)
b String name =new String(request.getParamete("name").getBytes("iso-8859-1"));
(b不推荐使用)
c 通过修改%TOMCAT%/conf/server.xml (解决get方法提交表单中文乱码问题)
加入 URIEncoding="gbk"
<3>静态html页面的中文化问题
<meta http-equiv="content-type" content="text/html; charset=gbk">
III 用户管理
功能:用户登录和用户注册
登录:username,password,role(select)
注册:姓名,密码,婚否(radio),电话(用户最多可以有填写3个电话号码,无需验证合法性)
loginWeb
/WEB-INF/web.xml
/WEB-INF/classes/com.LoginServlet.class
/WEB-INF/classes/com.RegisterServlet.class
/login.html
/register.html
分享到:
相关推荐
2020-5-05 Servlet学习 Tomcat 服务器配置 2020-5-08 UML 2020-5-08 Servlet学习 2020-5-09 Servlet学习 2020-5-10 Servlet学习 2020-5-11 Servlet学习---Cookie 2020-5-11 Servlet中的路径 2020-5-11 Servlet学习--...
### JavaWeb 学习笔记知识点总结 ...以上是对JavaWeb学习笔记中的JSP相关知识点进行了详细总结,包括JSP的基本概念、部署方式、编码设置、动态交互流程以及页面跳转等内容。希望对你学习JavaWeb有所帮助。
### JavaWeb基础知识详解 #### 一、Servlet概念与工作原理 **Servlet** 是服务器端的 Java 小程序,用于处理客户端请求并生成响应。Servlet 是 Java Web 的核心组件之一,通常用于实现动态网页功能。 ##### ...
以上是关于 JavaWeb 学习笔记中提到的主要知识点,包括 Web 应用的基本概念、目录结构、配置文件详解以及 Tomcat 的虚拟目录和虚拟主机配置方法。希望这些内容能帮助初学者更好地理解 JavaWeb 开发的核心要素和技术...
JavaWeb在线考试系统是基于MVC(Model-View-Controller)设计模式开发的一款应用程序,它主要用于帮助学生和教师进行线上测试和评估。在这个系统中,MVC模式将应用程序分为三个主要部分:模型(Model)、视图(View...
JavaWeb是Java技术在Web开发...通过本学习笔记,你可以系统性地掌握JavaWeb开发的基本技能,从搭建环境到编写实际应用,逐步提升你的编程能力。同时,结合“狂神说”的视频教程,理论与实践相结合,将使学习效果更佳。
JavaWeb是基于Java语言开发Web应用的一种技术体系,涉及众多组件和概念,包括HTTP协议、JSP、Servlet、HTTP请求与响应、请求转发与重定向、URL和URI的区别以及错误处理等多个方面。以下是对上述内容的知识点详细解析...
在IT行业中,JavaWeb开发是一项基础且重要的技能,尤其对于那些致力...总的来说,"javaweb学习笔记和源码"这个压缩包是一个全面学习JSP的好资源,涵盖了理论知识和实践案例,有助于开发者系统地掌握JavaWeb开发的基础。
总结,"狂神说JavaWeb笔记"涵盖了JavaWeb开发的各个方面,从基础的Servlet和JSP,到高级的框架应用和项目管理,为学习者提供了一个全面的学习路径。通过深入学习这些知识点,开发者能够熟练地构建和维护JavaWeb应用...
JavaWeb是Java技术在Web应用开发中的应用,涵盖了从服务器端到客户端的多个技术领域。以下是一些关于JavaWeb编程的基础知识点,...学习JavaWeb编程需要不断探索和实践,理论与实战相结合才能真正掌握这一领域的精髓。
JavaWeb是Java编程在Web应用开发中的一个重要领域,它涵盖了从网页开发到服务器端处理的一系列技术。本套笔记详细地介绍了JavaWeb的基础知识和核心概念,旨在帮助学习者掌握这个领域的关键技能。 首先,从第1章...
【描述】"方立勋JavaWeb视频前十一天笔记word"描述的是根据方立勋的视频教程制作的学习笔记,以Word文档的形式记录下来,便于回顾和复习。这表明笔记内容可能包括了视频课程中的关键讲解,重点难点以及实践案例。 ...
以上就是关于JavaWeb阶段的学习笔记,重点介绍了Servlet的基本概念和开发流程、ServletConfig与ServletContext的应用、处理HTTP请求的相关技术、Request对象的使用、JSP的简介以及BeanUtils工具包的介绍。...
"狂神"可能是指一位知名的JavaWeb讲师或教程作者,他的笔记为学习者提供了深入理解和实践该技术的宝贵资源。下面将详细阐述JavaWeb的主要知识点。 1. **Servlet**:Servlet是Java Web应用程序的核心组件,它是一个...
寻找适合自己的学习资源,现在不需要如此麻烦了,动力节点全新整理Javaweb阶段全套教程已经上线,内涵网络通信、HTML、CSS、JavaScript、MySQL、JDBC、JSP、Servlet等技术,Javaweb从入门到精通全套教程一站搞定,...
这份“传智的javaweb学习笔记”是针对这一领域的全面学习资料,主要包含了以下几个重要知识点: 1. **Servlet基础**:Servlet是JavaWeb的核心,用于处理HTTP请求。学习笔记可能详细解释了Servlet生命周期、如何创建...
JavaWeb是一种基于Java技术的Web应用程序开发框架,它涵盖了服务器端编程、数据库交互、用户界面设计等多个方面。对于初学者来说,掌握JavaWeb开发是步入Web开发领域的关键步骤。本项目实例旨在为新手提供一个全面的...
主要讲述的是servlt以及jsp的主要内容,详细的javaweb学习笔记,能够让小白完完全全的了解servlet的运行机制,并且能够深入学习javaweb
这份"javaweb笔记"旨在为学习者提供一个全面而精炼的学习指南,帮助你在JavaWeb开发领域快速成长。下面将详细阐述其中涉及的核心概念和技术。 1. **Servlet**:Servlet是Java平台上的服务器端组件,用于处理HTTP...
JavaWeb技术是Java编程语言在Web开发中的应用,主要涵盖了JDBC(Java Database Connectivity)和Servlet等核心概念。本文将深入探讨这两个主题,帮助你理解它们在实际开发中的作用和重要性。 首先,我们来看看JDBC...