JavaWeb基础汇总.docx
- 文档编号:5126912
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:78
- 大小:74.29KB
JavaWeb基础汇总.docx
《JavaWeb基础汇总.docx》由会员分享,可在线阅读,更多相关《JavaWeb基础汇总.docx(78页珍藏版)》请在冰豆网上搜索。
JavaWeb基础汇总
一、Servlet
1、Servlet概述
1.1B/S架构(了解)
1)什么是B/S架构
客户端使用浏览器,服务端使用web浏览器,客户端跟服务器之间使用HTTP协议进行通讯。
2)优点
①客户端不需要单独安装(因为使用浏览器);C/S架构比较麻烦的是需要单独安装每个客户端,并且一旦客户端版本发生改变,就需要再次安装。
②开发相对简单;C/S架构需要我们分别在,客户端和服务器端编写相应的通信处理模块和自定义协议,而B/S架构使用标准的HTTP协议(即不再需要自定义协议),而且浏览器与Web服务器已经包含了相应的通信模块了。
1.2什么是Servlet
Sun公司制订的一种用来扩展Web服务器功能的组件规范。
1)扩展web服务器功能
早期(2000年左右)的Web服务器:
apache的webserver、微软的iis。
只能够处理静态资源(即需要事先将html文件写好),不能够处理动态资源的请求(即需要依据请求参数然后进行计算,生成相应的页面)。
为了让这些web服务器能够处理动态资源的请求,需要扩展他们的功能。
早期使用的是CGI技术(CommonGatewayInterface通用网关接口),可以使用很多语言编写,如perl,C/C++等来开发CGI程序。
但是CGI程序有几个问题,比如开发比较复杂(因为需要程序员自己去分析请求参数)、性能不佳(因为当Web服务器收到请求之后,会启动一个CGI进程来处理请求)、CGI程序依赖平台(可移植性不好)。
现在,可以使用Servlet来扩展。
当浏览器将请求发送给Web服务器(比如:
apcahe的webserver),Web服务器会向Servlet容器发送请求,Servlet容器负责解析请求数据包。
当然,也包括网络通讯相关的一些处理,然后将解析之后的数据交给Servlet来处理(Servlet只需要关注具体的业务处理,不用关心网络通讯相关的问题)。
注意事项:
可以不使用服务器,而直接向Servlet容器发送请求,因为Servlet容器里面也有个通信模块,所以也可直接把Servlet容器当作简单的Web服务器来使用。
2)组件规范
①组件:
是符合一定规范,并且实现部分功能的可以单独部署的软件模块。
组建必须要部署到容器里面才能运行。
②容器:
也是符合一定规范,并且提供组件的运行环境的程序。
注意事项:
单个的组件、单个的容器都是没意义的,都不能单独运行,需要放在一起才能运行。
1.3什么是Tomcat
Tomcat本身是一个Servlet容器,即可以提供Servlet运行环境的一个程序,但是Tomcat还提供了Web服务器所具有的所有功能,所以我们也称Tomcat是一个Web服务器。
Tomcat的默认端口是8080。
1)安装Tomcat(
①Linux系统下安装和配置的步骤
step1:
解压到/home/soft01下
step2:
配置环境变量
cd/home/soft01
vi.bash_profile
JAVA_HOME:
jdk的主目录
CATALINA_HOME:
tomcat的主目录
PATH:
CATALINA_HOME/bin
step3:
启动Tomcat
cd/home/soft01/tomcat主目录/bin
shstartup.sh或者shcatalina.shrun
接下来,可以打开浏览器,输入,验证是否配置成功。
step4:
关闭Tomcat
cd/home/soft01/tomcat主目录/bin
shshutdown.sh
②Windows系统下安装和配置的步骤
step1:
解压到某个盘下
step2:
配置环境变量
JAVA_HOME(JDK的主目录)必须配置
CATALINA_HOME(Tomcat的主目录)可以不配置
PATH(Tomcat的bin目录)可以不配置
“我的电脑”右键“属性”,打开“系统属性”的“高级”选项卡,找到“环境变量。
新建“用户变量”。
新建JAVA_HOME。
注意事项:
新建系统变量或新建用户变量均可,建议新建用户变量。
新建CATALINA_HOME(可以不配置)。
新建PATH(可以不配置)。
注意事项:
如果环境变量中已经有PATH,修改该PATH即可,使用“;”分号作分隔,如下所示:
PATHC:
\ProgramFiles\Java\;
D:
\apache-tomcat-
Windows操作系统下以“;”分号为分隔符;linux系统下以“:
”冒号为分隔符。
step3:
启动Tomcat
进入启动Tomcat的bin目录下,双击“startup.bat”。
接下来,可以打开浏览器,输入,验证是否配置成功。
step4:
关闭Tomcat
进入启动Tomcat的bin目录下,双击“shutdown.bat”。
2)Tomcat目录结构简介
①bin目录:
存放启动和关闭服务器的一些脚本(命令)。
②common目录:
共享(部署在该服务器上的所有程序都可以使用)的一些jar包。
③conf目录:
存放服务器的一些配置文件。
④webapps目录:
部署目录。
⑤work目录:
服务器运行时,生成的一些临时文件。
1.4如何写一个Servlet(不使用开发工具)
step1:
先写一个Java类,实现Servlet接口或者继承HttpServlet抽象类。
publicclassHelloWorldServletextendsHttpServlet{
//Tomcat会自动调用service,自己不用再去写方法调用了,所以必须把名字写对!
publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//异常必须写两个,不能写成Exception,也不能再多个异常
//设置一个消息头content-type,告诉浏览器返回的数据类型是一个html文档,以及编码格式。
此外,还可以告诉服务器,在使用out输出时,使用指定的编码格式进行编码
response.setContentType("text/html;charset=utf-8"");
//通过响应对象,获得一个输出流
PrintWriterout=response.getWriter();
//调用流的方法进行输出,其实质是将处理结果写到了response对象上
out.println(" red;font-size: 30px;'>HelloWorld"); /**out.close()不调用也可以,因为Servlet方法执行完毕,容器会自动调用out.close方法*/ out.close();}} step2: 执行编译操作: javac-d.HelloWorldServlet.java 但是会报错,找不到某些类! 其中-d.代表把编译后的文件放在当前文件夹下。 把Tomcat安装目录中common中lib中的servlet-api.jar和刚编写类放一起(是编译时需要用的jar)。 再次编译: javac-cpservlet-api.jar-d.HelloWorldServlet.java,其中-cpservlet-api.jar表示告诉Java编译器去哪里找需要的class文件(到servlet-api.jar的jar包中找)。 step3: 打包,即创建一个具有如下结构的文件夹: appname(文件夹名起应用名) |--WEB-INF(必须大写) |--classes(文件夹,放.class文件) |--lib(文件夹,放.jar文件,可没有) |--web.xml(部署描述文件url-pattern) 将编译好的.class文件放入classes文件夹中(如有包,则一起放入)。 web.xml文件内容: xmlversion="1.0"encoding="UTF-8"? > --根元素--> xmlns="/ns/j2ee" xmlns: xsi="/XMLSchema-instance" xsi: schemaLocation="/ns/j2ee /ns/j2ee/web-app_2_4.xsd"> --类名要完整(包名.类名都要有)--> --注意斜线开头--> step4: 部署,将step3创建的文件夹拷贝到Servlet容器特定的文件夹下面(拷贝到Tomcat的webapps目录下)。 注意事项: 也可以将step3创建的文件夹使用jar命令进行压缩,生成.war为后缀的文件,然后拷贝。 step5: 启动Servlet容器,访问Servlet。 访问格式: 比如在浏览器地址栏输入: 1.5使用MyEclipse开发Servlet step1: 配置MyEclipse,使得MyEclipse能够管理Tomcat。 1)点击工具栏上的“Run/Stop/RestartMyEclipseServers”图标旁边的下拉箭头,选择“ConfigureServer”。 2)在弹出的对话框“Preferences”中展开“MyEclipse”--“Servers”--“Tomcat”--“Tomcat5.X” 注意事项: 选择你目前电脑上Tomcat的版本,此处以Tomcat5为例。 3)将Tomatserver选项置为“Enable”(默认为“Disable”)。 4)点击“Tomcathomedirectory”之后的“Browse”按钮,选择Tomcat主目录,确定,然后“Tomcatbasedirectory”和“Tomcattempdirectory”自动生成,点击“OK”。 注意事项: 两项可改可不改的: Tomcat下的JDK--“TomcatJDKname”是自己已安装的JDK(Tomcat也是java写的也得依赖JDK)。 建议Tomcat下的Launch--“Tomcatlaunchmode”设置为Runmodel,默认为Debugmode而该模式在有些时候会显示不正常。 5)回到工具栏上的“Run/Stop/RestartMyEclipseServers”图标旁边的下拉箭头,选择Tomcat5.x,点击“Start”。 6)当在控制台显示“ServerstartupinXXXms“,则Tomcat启动成功。 注意事项: 如果出现“Addressalreadyinuse: JVM_Bind”异常,则说明已经启动了一个Tomcat。 解决办法: 运行shutdown命令,关闭之前开启的Tomcat。 step2: 建立一个WebProject(Web工程),填写“Projectname”,JDK最好选5.0,其他选项默认,点击“Finish”。 step3: 编写Java类和web.xml文件。 step4: 部署项目到Tomcat服务器。 1)点击工具栏“DeployMyEclipseJ2EEProjecttoServer”按钮。 2)弹出对话框“ProjectDeployments”,点击“Add”按钮。 3)弹出“NewDeployment”对话框,选择“Tomcat5.x”,点击“Finish”,最后点击"OK"。 注意事项: 在对话框“ProjectDeployments”对话框有4个按钮,常用的为 ①“Add”按钮: 在Tomcat服务器上增加新应用。 ②“Remove”按钮: 删除Tomcat服务器上的新应用。 ③“Redeploy”按钮: 重新部署该应用,一般每次修改后都需要重新部署一下。 step5: 访问Tomcat服务器上的Servlet实例。 访问格式: 比如在浏览器地址栏输入: 注意事项: 在IDE工具(集成开发环境)中启动Tomcat部署项目后,不需要重新启动服务器,系统会自动部署。 IDE工具简化了Servlet的开发步骤: 第1步写一个java类手动 第2步编译自动 第3步打包自动 第4步部署不用手动拷贝,点一下 第5步启动服务器,访问servlet手动 默认情况下,应用名和工程名相同。 工程--属性--MyEclipse--Web--WebContext可修改部署后的应用名。 新建Web工程时也可以手动在ContextrootRUL中更改应用名。 1.6Servlet是如何运行的 比如,在浏览器地址栏输入: step1: 浏览器依据ip和port建立与Servlet容器之间的连接。 step2: 浏览器将请求数据打包(即按照http协议的要求,将相关数据封装成一个数据包,一般称之为请求数据包)并发送给Servlet容器。 step3: Servlet容器解析请求数据包,并将解析之后得到的数据放到已创建的request对象上,同时,容器也已经创建好了一个response对象。 step4: Servlet容器依据请求资源路径(即/web01/hello)找到Servlet的配置,然后创建Servlet对象(根据xml文件里配置的类而创建)。 step5: Servlet容器接下来调用Servlet对象的service方法,并且会将事先创建好的request对象和response对象作为service方法的参数传递给Servlet对象。 step6: Servlet可以通过request对象获得请求参数,进行相应的处理,然后将处理结果写到response对象上。 step7: Servlet容器读取response对象上的数据,然后将处理结果打包(响应数据包)并发送给浏览器。 step8: 浏览器解析响应数据包,将返回的数据展现给用户。 1.7常见错误及解决方式 1)404: 是一个状态码(是一个三位数字,由服务器发送给浏览器,告诉浏览器是否正确处理了请求),404的意思是说: 服务器依据请求资源路径,找不到对应的资源。 解决: ①依据 ②仔细检查web.xml,特别要注意servlet-name是否一致。 2)500: 服务器处理出错,一般是因为程序运行出错。 解决: ①检查程序的代码,比如: 是否继承。 ②检查web.xml,类名要填写正确。 3)405: 服务器找不到对应的service方法。 解决: 检查service方法的签名(方法名、参数类型、返回类型、异常类型)。 1.8根据请求次数显示结果和显示当前时间 eg1: 在地址栏输入,获得5个HelloWorld 注意事项: qty: 请求参数名字。 5: 请求次数为5。 publicvoidservice(HttpServletRequestrequest, HttpServletResponseresponse)throwsServletException,IOException{ //读请求参数值,返回值是String StringqtyStr=request.getParameter("qty");intqty=Integer.parseInt(qtyStr);//转成整数 Stringrs="";for(inti=0;i rs+=" 30px'>HelloWorld
//输出处理结果,设置一个消息头content-type,告诉浏览器返回的数据类型是一个html文档
response.setContentType("text/html");
PrintWriterout=response.getWriter();//通过响应对象,获得一个输出流
//调用流的方法进行输出,其实质是将处理结果写到了response对象上
out.println(rs);out.close();}
eg2:
在网页上显示当前时间
step1:
Java类中写
publicvoidservice(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,IOException{
response.setContentType("text/html");//告诉浏览器返回的数据类型是一个html文档
PrintWriterout=response.getWriter();//通过响应对象,获得一个输出流
Datedate=newDate();SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
Stringnow=sdf.format(date);out.println(now);//输出到页面out.close();}
step2:
web.xml中写:
2、HTTP协议
2.1什么是HTTP协议
HTTP(Hypertexttransportprotocol)是超文本传输协议。
是一种应用层协议,由W3C制定,它定义了浏览器(或者其他客户端)与Web服务器之间通讯的过程及数据格式。
2.2通讯的过程
step1:
浏览器建立与Web服务器之间的连接(Socket)。
step2:
浏览器要将请求数据打包(请求数据包),然后发送给Web服务器。
step3:
Web服务器将处理结果打包(响应数据包),然后发送给浏览器。
step4:
Web服务器关闭连接。
注意事项:
特点:
一次请求,一次连接。
优点:
Web服务器可以利用有限的连接个数为尽可能多的客户服务(效率高)。
如果浏览器要再发请求,就必须重新建立一个新的连接。
2.3数据格式
1)请求数据包
①请求行:
请求方式+请求资源路径+协议描述。
②若干消息头:
消息头是一些键值对,一般由W3C定义,有特定的含义。
浏览器和服务器之间,可以通过发送消息头来传递一些特定的信息,比如:
浏览器可以通过user-agent消息头来通知服务器浏览器的类型和版本。
③实体内容:
只有当请求方式为post时,浏览器才会将请求参数添加到实体内容里面,如果请求方式为get,浏览器会将请求参数添加到请求资源路径的后面。
2)响应数据包
①状态行:
协议描述+状态码+状态描述。
②若干消息头:
服务器也可以发送一些消息头给浏览器,比如content-type,告诉浏览器服务器返回的数据类型和编码格式(字符集,比如:
UTF-8、ISO-8859-1)。
③实体内容:
程序处理之后,返回的结果。
3)截获数据包,使用MyEclipse中的TCP/IPMonitor,TCP/IPMonitor相当于一个代理服务器,它的原理图如下:
2.4TCP/IPMonitor的使用
1)Window--ShowView--Other--MyEclipseCommon--TCP/IPMonitor
2)在TCP/IPMonitor的空白处点右键--Properties--弹出对话框点Add,增加新的监视器:
3)点击Start,启动代理服务器--OK。
4)测试1.8案例eg1,地址栏输入:
,注意使用代理端口号!
执行完毕,即可查看TCP/IPMonitor出现的内容。
2.5get请求与post请求
1)哪些情况下,浏览器会使用get方式发请求:
①直接在浏览器地址输入某个地址。
②点击链接地址。
③表单默认的提交方法:
2)哪些情况下,浏览器会用post方法发请求:
①设置表单的method属性值为“post”。
3)get请求的特点:
①get请求会将请求参数添加到请求资源路径的后面,因为请求行存放的数据大小有限(也就是地址栏的最长字节数),所以get请求只能提交少量的数据。
②get请求会将请求参数显示在浏览器地址栏,不安全(比如,路由器会记录整个地址)。
4)post请求的特点:
①post请求会将请求参数添加到实体内容里面,所以,可以提交大量的数据。
②post请求不会将请求参数显示在浏览器地址栏,相对安全一些。
但是,post请求并不会对请求参数进行加密处理。
用HTTPS协议进行加密处理。
注意事项:
服务器不关心是用浏览器还是Java程序发送的请求,只要符合协议格式,都会处理。
2.6如何读取请求参数
1)方法一:
Stringrequest.getParameter(StringparaName);
①如果paraName(即参数名称)与实际的参数名称不一致,会获得null(不报错)。
②在使用表单提交数据时,如果用户没有填写任何的值,会获得空字符串""。
2)方法二:
String[]request.getParameterValues(StringparaName);
①当有多个参数且名称相同时,使用该方法。
比如:
?
city=bj&city=cs&city=wh
注意事项:
getParameterValues方法也可用于只有一个参数的情况。
2.7JDBC访问数据库(MySql)
1)使用MySql数据库
①登录MySql:
mysql-uroot;//登录mysql,使用root用户权限
②查看当前所有的数据库:
showdatabases;
③创建一个新的数据库:
createdatabasedb_changdefaultcharactersetutf8;//创建db_chang数据库,默认是用utf8编码集(不能写减号-)
④使用某个数据库:
usedb_chang;
⑤查看当前数据库有哪些表:
showtables;droptabletablname;//删表
⑥建表:
createtablechang_emp(idintprimarykeyauto_increment,
namevarchar(50),salarydouble,ageint);
insertintochang_emp(name,salary,age)values("tom",10000,23);
注意事项:
auto_i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaWeb 基础 汇总
