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应用开发 布置的一项简单的在线考试系统,基于MVC模式(jsp+servlet+javabean)以及mySQL数据库,大家共同进步,谢谢。
寻找适合自己的学习资源,现在不需要如此麻烦了,动力节点全新整理Javaweb阶段全套教程已经上线,内涵网络通信、HTML、CSS、JavaScript、MySQL、JDBC、JSP、Servlet等技术,Javaweb从入门到精通全套教程一站搞定,...
JavaWeb个人学习笔记,这个是看韩顺平和圣思园视频,自己同过onenote总结出来的笔记,有截图,有箭头有框框来帮助理解,可以下载来看看
主要讲述的是servlt以及jsp的主要内容,详细的javaweb学习笔记,能够让小白完完全全的了解servlet的运行机制,并且能够深入学习javaweb
此文档为传智播客老师JavaWeb入门视频的笔记,其中包含视频中的讲解过程笔记记录以及课程中的案例源代码实现,笔记已转成CHM文档格式,方便阅读 1.此笔记为JavaWeb非常全面的教程,适合JavaWeb爱好者自学。循序渐进...
Servlet,请求和响应机制,jsp动态网页技术,会话跟踪 javaBean,JSP常用标签和自定义标签,AJAX实例,以及监听器,过滤器和BaseServlet和分页
JavaWeb阶段学习笔记,主要记录使用servlet service dao 三层书写简单功能,及过程当中需要的知识点
javaweb学习笔记,里面有Tomcat、http协议、servlet接口,以后会持续更新
圣思源老师讲解的javaweb部分的学习笔记,对jsp+servlet+tomcat进行了详细的讲解。张龙老师主讲。值得学习借鉴
有关Javaweb的笔记用的是md记得,听的是b站的狂神说
寻找适合自己的学习资源,现在不需要如此麻烦了,动力节点全新整理Javaweb阶段全套教程已经上线,内涵网络通信、HTML、CSS、JavaScript、MySQL、JDBC、JSP、Servlet等技术,Javaweb从入门到精通全套教程一站搞定,...
Javaweb基础全课程笔记,黑马程序员上课笔记,主要涉及前端 jsp和servlet等
Java WEB 篇七 Servlet 生命周期
自己总结的一些JavaWeb的学习笔记!希望对大家有用!
寻找适合自己的学习资源,现在不需要如此麻烦了,动力节点全新整理Javaweb阶段全套教程已经上线,内涵网络通信、HTML、CSS、JavaScript、MySQL、JDBC、JSP、Servlet等技术,Javaweb从入门到精通全套教程一站搞定,...
Tomcat+*Servlet+Jsp+Filter+Listener
本人从java0基础到javaweb再到web框架学习的所有笔记,详细记录了个人学习所有的知识点 包含java核心基础 jsp servlet 等javaweb技术 包含了ssh,ssm框架所有的知识点和整合等很详细希望能帮助到正在努力学习的你
java web 笔记 struts:java web开源框架,主要是用来简化servlet开发
Javaweb是Web开发的基础,学习整理的笔记,十分详细,包括下面的部分 JDBC HTTP协议 Web服务器 Servlet Request Response JSP MVC模式和三层架构 会话技术 Filter Listener