Web项⽬基本结构
C/S模式的软件
客户端/服务器 ⽐如QQ,或者⼀些⼤型游戏
⽤户需要先下载软件的客户端,然后才可以使⽤.
B/S模式的软件
浏览器/服务器 我们上⽹时候所访问⽹站的基本全是B/S模式的项⽬.
⽤户不需要下载任何东西,只需要⽤到浏览器就可以访问到这个项⽬.
我们在java中要学习的web项⽬,就是B/S架构的项⽬.
什么是web
web项⽬中,其实就是俩个软件之间的信息交换,客户端机器中的浏览器软件和服务器端机器中的web服务器软件之间的交换,⽐如在我们的学习中,就是客户端的浏览器和服务器端的tomcat进⾏信息交换。
浏览器和tomcat是俩个不同的软件,但是在开发这俩个软件的时候,都是加⼊对http协议的⽀持,所有它们俩个进⾏信息交换的时候,是通过http协议规定的⽅式进⾏交换的:客户端先发送⼀个请求,然后服务器端接收到请求后再返回给客户端⼀个响应,并且把客户端所请求的资源返回给客户端.
我们要做的时候就是,开发⼀个web项⽬,然后把这个web项⽬放到tomcat⾥⾯指的的位置,然后再运⾏这个tomcat软件,在tomcat运⾏过程中,其他计算机⾥⾯,只要是⽹络和我们这个服务器是通的,那么都可以通过浏览器来访问我们这个web项⽬。
在⽤浏览器访问tomcat的时候,tomcat会按照浏览器发送的这个请求⾥⾯的内容,把浏览器想访问的页⾯从web项⽬中到并返回给这个浏览器,或者是tomcat去调⽤web项⽬所写的某些java类中的⽅法(其实就调⽤servlet中的⽅法)
注意:web项⽬中,任何⼀个类⾥⾯都不需要写main⽅法,整个项⽬的运⾏,对象的创建,⽅法的调⽤,都是由tomcat处理的,我们不需要去管. tomcat根据客户端的要求,会调⽤某个servlet中的指定⽅法,然后在这个指定⽅法⾥⾯,我们可以写上调⽤我们⾃⼰写的某个类的⽅法,类似的这样⽅法相互调⽤下去,最后调⽤到我们sql语句的执⾏,这样我们的⼀个功能就⾛完了,⽐如说登录或者注册功能。
⼀个web项⽬最基本的项⽬结构:
※ Eclipse中⼀个web项⽬的基本结构:
※ web项⽬中WebContent⽂件夹与Tomcat对应关系:
项⽬名字:jd1812_web
1.⽂件夹jd1812_web,项⽬名字是随便起的
2.WebTest⽂件中有⽂件WEB-INF,WEB-INF这个名字是固定的
3.WEB-INF⽂件夹中:classes⽂件夹,lib⽂件夹,l⽂件,这个名字都是固定的。
l⽂件在tomcat⽬录中的conf⽬录⾥⾯有⼀个l模板.
注意:
WebContent⽂件夹下⾯还可以放⽂件夹、页⾯、css样式、js⽂件、图⽚等等.
classes⽂件夹中放的是编译后的.class⽂件
lib⽂件夹中放的是当前项⽬中运⾏所需要的jar包
※ tomcat服务器:
1. bin ⽬录:启动、关闭tomcat相关的命令。
2. conf ⽬录:tomcat的配置⽂件
3. lib ⽬录:tomcat中可以同时部署多个项⽬,多个项⽬都需要⽤到的相同jar包,就可以放在这个⽬录。
4. logs⽬录:记录tomcat⽇常运⾏的情况或者错误信息。
5. temp⽬录:tomcat运⾏期间可能会产⽣⼀些临时⽂件,这写临时⽂件就会放在这个⽬录.
6. webapps⽬录:我们开发好的web项⽬就是需要放到这个指定的⽬录下⾯,默认⾥⾯已经有⼀些tomcat⾃带的项⽬样例了.
7. work⽬录:编译jsp页⾯时候需要⽤到的⼀个⽬录.
访问tomcat中项⽬⾥⾯的资源的⽅式:
IP:port/项⽬名字/项⽬在资源
127.0.0.1:8002/WebTest/hello.html
172.16.4.81:8002/WebTest/hello.html
⼿写⼀个servlet并且放到tomcat中去运⾏:
package st;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;
public class FristServletTest extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
PrintWriter out = Writer();
out.println("hello world");
out.flush();
out.close();
}
}
servlet-api.jar在tomcat的lib⽬录中
servlet-api.jar和FristServletTest.java都在桌⾯编译java⽂件所在的命令窗⼝的路径也在桌⾯
javac -cp servlet-api.jar -d . FristServletTest.java
编译完之后,把这个.class⽂件已经包⽬录,放到项⽬中的classes⽬录⾥⾯,然后再项⽬中的l⽂件进⾏配置,配置的⽬的是:想把⼀个路径映射成我们⾃⼰⼀个servlet,这个我们在浏览器⾥⾯就可以⽤个这个映射的路径来来访问这个servlet了.
浏览器的地址栏中只能提供类似于这样的信息:主要是以路径的形式提供访问的信息:
/.../.../.../...
172.16.4.81:8002/WebTest/hello.html
但是我们需要的是这样的信息:
要运⾏servlet⾄少要有servlet的对象,所有我们需要这个类的package.类名
st.FristServletTest
所以我们需要把⼀个路径映射成⼀个servlet:
⽐如:把/first路径映射成FristServletTest这个servlet,将来⽤户在浏览器中输⼊/first路径之后,就相当于告诉服务器,需要运⾏FristServletTest这个servlet.
例如:
<servlet>
<servlet-name>firstservlet</servlet-name>
<servlet-class>st.FristServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>firstservlet</servlet-name>
<url-pattern>/first</url-pattern>
</servlet-mapping>
<servlet>中的<servlet-name>⼦标签:
给你要描述的servlet起⼀个名字,这个是名字是随便起的,⽬的是为了在下⾯做映射的时候能够再到这个servlet
<servlet>中的<servlet-class>⼦标签:
这个servlet的package.类名
<servlet-mapping>中的<servlet-name>⼦标签:
指明这个映射是给哪⼀个servlet的做的映射,通过之前随便起的servlet的名字。
<servlet-mapping>中的<url-pattern>⼦标签:
这个就是我们要映射的路径,将来浏览器⾥⾯输⼊这个路径就相当于要访问我们这个servlet。
注意:这个路径⼀定是以/开头的:/a /a/b /a/b/hello
package com.briup.web.Servelt;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/*
* 负责处理浏览器提交的请求
* 并回写资源
*/
public class FirstServlet implements Servlet{
/
/当前Servlet对象销毁的时候调⽤的
@Override
public void destroy() {
// TODO Auto-generated method stub
}
//获取Servlet的配置对象
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
/
/返回Servlet的基本信息
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
//对Servlet对象初始化的⽅法
@Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
/
/处理请求,回写资源
//ServletRequest对http请求封装,把各种各样的参数进⾏提取
//servletPesponse给浏览器写内容,写的时候servletPesponse⾃动封装成http响应格式的数据
//servletPesponse内部维护了字节流和字符流
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
//告诉浏览器写回的数据类型
arg1.setContentType("text/html;charset=UTF-8");
//获取⽹络输出流
PrintWriter Writer();
pw.write("test OK");
pw.flush();
pw.close();
}
servlet和tomcat的关系}
//l⽂件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="java.sun/xml/ns/javaee" xsi:schemaLocation="java.sun/x ml/ns/javaee java.sun/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>jd1812_web</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>first</servlet-name>
<!-- 处理请求的类是谁 -->
<servlet-class>com.briup.web.Servelt.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 根据name相同,servlet-mapping会到相应的servlet -->
<servlet-name>first</servlet-name>
<!-- 处理资源的名字,斜杠不能省略
/表⽰的是项⽬名 -->
<url-pattern>/FirstSer</url-pattern>
</servlet-mapping>
</web-app>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。