JavaEE--JavaWeb应用程序
来源:互联网 发布:诺维斯基体测数据 编辑:程序博客网 时间:2024/05/18 18:20
JavaWeb应用程序的基础目录结构如下:
web.xml文件:web项目描述文件.
WEB-INF目录下的文件都是安全的。不可以直接通过在地址栏输入地址的方式访问。
发布第一个web应用程序:
在tomcat的虚拟目录中webapps中建立个符合上述结构的文件结构,即是一个JavaWeb应用
将项目发布成默认项目
在tomcat\webapps目录下,包含一个ROOT目录,此目录就是Tomcat的默认项目。
1)将自己的项目发布以后,修改成ROOT即可以作为默认项目使用。
2)或是建立一个新的虚拟目录,然后在将自己的项目部署到新的虚拟目录下,并修改为ROOT。
HTTP协议
HTTP协议:(HyperTextTransferProtocol)
超文本传输协议,是关于如何在网络上传输超级文本HTML的协议。
在分层的网络体系结构中,HTTP协议属于应用层,建立在TCP/IP传输层协议的基础之上。
HTTP协议默认使用80端口。
HTTP协议的版本为1.0和1.1,目前广泛使用的是1.1版本。
URL:Uniform Resource Locator 统一资源定位。是专门为网络上的资源位置而设置的一种编址方式。url一般包含3个部分组成:
应用层协议。
主机IP地址或是域名。
资源所在的路径或是文件名。http://ip域名
如:协议://Ip或是域名[:端口]/资源名
示例:http://www.baidu.com/index.html
示例:http://127.0.0.1:8080/index.jsp
客户机通过HTTP与服务器一次通讯
HTTP请求/响应
HTTP请求/响应格式:
通过HTTP请服务器请求数据,有严格的定义,称之为请求的格式。
服务器返回的数据,也有严格的定义,称之为响应格式。
HTTP请求类型
HTTP常用的请求方式包括:
GET-最为常见,但发送的数据量很小,发送的数据直接包含到url的后面。4K
POST-包含大量数据,数据在请求正文中通过表单进行提交。
HEAD,PUT,DELETE三种Tomcat服务器默认都不支持。常用的只有前两种。
GET与POST请求的区别:
GET:发送到服务器的数据出现在URL的后面。最多不能超过1K.如:http://localhost:8080/helloWeb?name=itcast&sex=man&..
POST:发送到服务器的数据会出现有请求的正文部分。数据量不受限制。如:
Http请求的格式:
Http请求有三部分组成:
请求首行 GET /helloWeb?name=Jack HTTP/1.1
请求头 …..
请求的正文。name=Jack&age=90
POST /a.html HTTP/1.1 //请求行
Accept: / //客户端支持的返回类型
Referer: http://localhost:2046/b.html //客户端的网址
Accept-Language: zh-cn //客户端的语言类型
User-Agent: Mozilla/4.0 //客户端的浏览器类型
Accept-Encoding: gzip, deflate //客户端支持的数据压缩类型
Host: localhost:2046 //服务器的地址
Connection: Keep-Alive //是否保持连接,可选的值为Keep-alive|close
[必须的一行空行]
name=itcast&pwd=1234 //请求的正文,如果是POST请求则
请求头讲解:所有的信息都在request中
Accept: / 说明支持的数据类型
Referer: http://localhost:9999/itcast/a.html //从哪儿来的,可以防止非法引用连接
Accept-Language: zh-cn //支持的语言
User-Agent: Mozilla/4.0 //说明使用的浏览器的版本信息
Accept-Encoding: gzip, deflate //客户端支持压缩格式
Host: localhost:9999 //访问的主机
Connection: Keep-Alive //在请求完成后是否断开连接。可选值另有,HTTP/1.1 :close
Cookie : //缓存在客户端的数据(数据量最大4K)
Content-Length: 8 //发送的字节长度
Cache-Control: no-cache //是否缓存数据
Content-Type: application/x-www-form-urlencoded //内容类型,此意为表单
http响应的格式:
HTTP响应的格式也有三部分组成
响应首行,也叫状态行。 HTTP/1.1 404(状态码) not found
响应头
[空行]
响应正文(Response Content)。
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=D6241588E2D14A562CB5BD6ECD0B3DF3
Content-Type: text/html;charset=GBK
Content-Length: 200
Date: Mon, 30 May 2011 09:02:03 GMT
< html>< head>Itcast< head>…
响应头格式讲解:
HTTP/1.1 200 OK //状态码200是正常返回数据
Location:http://localhost:8080/aa/abc.jsp //跳到哪个页面即重定向。等同于sendRedirect(),状态码为302
Server: Apache-Coyote/1.1 //服务器类型
Content-Type: text/html //正文类型
Content-Length: 8 //返回字节的长度
Content-Encoding:gzip //服务器端的压缩格式,用于通知客户端如何解压
Date: Tue, 24 May 2011 10:42:28 GMT
Refresh:1;url=http://www.baidu.com //1秒钟以后刷新到某个地址
Content-Disposition:attchment;filename=“car.jpg” //下载文件时指定下载的文件
Transfer-Encoding: chunked //数据是一块一块的方式发送给客户端的
Expires:-1 //不需要缓存本次响应的数据
Cache-control:no-cache //针对不同版本的浏览器所以必须三个都用
Pragma:no-cache
index.jsp主页:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html> <head> <title>第一个web项目的主页</title> </head> <body> <h2>主页主页</h2> <h2>湖南长沙</h2> <h3>发布方式一......</h3> <hr/> <h2>表单提交的GET/POST方式</h2> <!-- 默认的是get方式 <form action="HelloServlet"> --> <form action="HelloServlet" method="post"> 姓名:<input type="text" name="name"/><br/> 密码:<input type="password" name="pwd"/> <br/> <input type="submit" value="登陆"/> </form> <h3>非WEB-INF安全目录内的文本可以以访问路径直接访问文本,早期的jsp</h3> <form action="jsps/reg.jsp"> 姓名:<input type="text" name="name"/><br/> 密码:<input type="password" name="pwd"/> <br/> <input type="submit" value="登陆" /> </form> <h2>HTTP协议演示:利用referer属性实现防止盗链</h2> <a href="show">欣赏图片</a> <br/><br/><br/><br/> </body></html>
HelloServlet.java
package cn.hncu.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String name=req.getParameter("name2"); String pwd=req.getParameter("pwd"); resp.getWriter().print(name+","+pwd); }}
reg.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html> <head> <title>结果注册页面</title> </head> <body> <h2>结果登陆页面</h2> <% //GET方式:表单提交信息显示在url处(也可以在url直接添加Parameter),从url处获取Parameter //POST方式:表单提交信息显示在请求文本处,从表单处获取Parameter String name=request.getParameter("name"); String pwd=request.getParameter("pwd"); out.print("登录信息:<br/>"); out.print(name+","+pwd); %> <br/> <!-- 网页内的"/"代表helloWeb外面的目录,所以网页文本路径一定要加项目根目录:"/helloWeb/" --> <!-- 而java代码内的"/"代表项目根目录,所以只要写文本存在目录就好了 --> <img alt="" src="/helloWeb/images/1.jpg"> </body></html>
ShowServlet.java
import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ShowServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// resp.setContentType("text/html;charset=utf-8"); resp.setHeader("Content-Type", "text/html;charset=utf-8"); //获取请求头中的referer信息--来源于哪里 String strRef=req.getHeader("referer"); System.out.println(strRef); PrintWriter p=resp.getWriter(); p.print("<html><head>湖南城院</head><body>"); String str=""; if(strRef==null){ str="请先去看广告..."; }else{ if(strRef.contains("helloWeb")){ // 网页内的"/"代表helloWeb外面的目录,所以网页文本路径一定要加项目根目录:"/helloWeb/" // 而java代码内的"/"代表项目根目录,所以只要写文本存在目录就好了 str="<img src='images/1.jpg'/>"+ "<img src='images/2.jpg'/>"+ "<img src='images/3.jpg'/>"+ "<img src='images/4.jpg'/>"; }else{ str="来自盗链..."; } }// resp.getWriter().print(str); p.print("湖南益阳...<br/>");//如果没有设置协议,,这里就会显示乱码 p.print(str); p.print("<br/>湖南益阳...<br/>");//如果没有设置协议,,这里就会显示乱码 p.print("</body></html>"); }}
配置文件web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name></display-name> <servlet> <servlet-name>hello</servlet-name> <servlet-class>cn.hncu.servlet.HelloServlet</servlet-class> </servlet> <servlet> <servlet-name>ShowServlet</servlet-name> <servlet-class>cn.hncu.servlet.ShowServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello.asp</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ShowServlet</servlet-name> <url-pattern>/show</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
- JavaEE--JavaWeb应用程序
- JavaEE应用程序
- JavaWeb JavaEE 命名规则
- JavaSE、JavaEE、JavaWeb分不清?
- javaWeb与javaEE的区别
- java----javaWeb-----JavaEE学习网站
- 重新学javaweb---JavaEE 监听器
- Javaweb、javaEE学习笔记基础知识
- JavaEE——JavaWeb介绍
- Flex与JavaEE应用程序结合
- JavaWeb应用程序发布方式
- JavaWeb应用程序状态管理
- JavaEE 和 JavaWeb的区别与联系
- JavaEE 和 JavaWeb的区别与联系
- JavaEE 和 JavaWeb的区别与联系
- JavaWeb与JavaEE命名规则(规范)
- JavaEE应用程序性能调优案例分析
- 欢迎javaWEB 开发程序员加入JavaEE 框架交流俱乐部!
- mongodb 数据库操作--备份 还原 导出 导入
- cc-js 查看当前运行平台
- <HeadFirst_HTML5> O'REILLY_Chap.8_视频
- 【SFSafariViewController】提供完整的Web浏览体验
- 自定义注解与validation结合使用案例
- JavaEE--JavaWeb应用程序
- 使用Python连接MySQL
- <HeadFirst_HTML5> O'REILLY_Chap.9_Web存储(本地存储)
- 【DP】 noi openjudge 2.6 乘积最大
- jquery实现复选和下拉切换
- NOI2.6 8782: 乘积最大
- SmartGit的使用
- Fail to load the JNI share library"..\jdk1.7.0\\bin\..\jre\bin\client\jvm.dll"解决方法
- C++拷贝构造函数(深拷贝,浅拷贝)