从零搭建Web应用(一)

​1 Java Web

本文将从最基础的HTTP协议开始讲起,介绍如何徒手搭建Web应用,内容如果比较多的话,后面会分成多篇逐步介绍。

2 HTTP协议

Web应用被称之为B/S架构,与其对应的的是C/S架构。这里面的B是Browser(浏览器),C是Client(客户端),S是Server(服务器)。客户端需要直接安装在访问终端上,不同访问终端(主要指不同的操作系统)需要提供不同的安装包,这增加了软件投产成本,换言之也就是软件可移植性差。B/S架构则相对简单,只要访问终端安装了浏览器就可以使用。现在的体系架构下,浏览器已经是操作系统的标配组件,所以不需要应用开发商额外做什么适配工作。这就是为什么我们认为B/S架构的应用可移植性比C/S架构强的原因。

B/S架构下,B和S之间的通信是通过HTTP协议进行的。HTTP协议是网络协议的标准组成部分,底层基于TCP协议实现。HTTP协议通俗理解有点类似于我们的日常对话,你问我答的形式。由B端发起询问,S端给出答案,回答的内容则是标准的字节流。浏览器在获取到字节流数据后,则根据协议的相关定义开始进行解析。其或者将内容渲染成一个HTML的页面,或者将其转换成一个文件,或者执行一段脚本……

HTTP协议不像平时我们使用的软件那样看得见摸得着,它是互联网的底层协议,虽然在互联网的世界里无处不在,但却像空气一样无法感知。为了直观了解HTTP协议,我们需要使用一些辅助的工具来帮助我们看到它。抓包工具就是我们所需要的辅助工具,比如WireShark。下图是访问www.sina.com.cn的时候的HTTP请求的截图:

请求www.sian.com.cn

www.sian.com.cn的响应

上面两张图中的Hypertext Transfer Protocol就是我们常说的HTTP协议,直译过来是超文本传输协议的意思。称其为超文本的原因,大概是制定该协议的人觉得这个协议能做的事情远远不止仅是文本传输那么简单。

Hypertext Transfer Protocol下面,也就是我们俗称的HTTP报文头了。比如Host指明了访问的服务器的域名、User-Agent给出了浏览器的相关信息、Accept给出了浏览器可以解析的文件格式清单(要求服务器必须按照当中的某一种格式返回)……

GET / HTTP/1.1这一行中给出了HTTP协议的方法,方法其实也可以简单翻译成动作。GET的意思是取,还有POST是提交……HTTP协议支持的方法有如下,一般用的最多的就是GET和POST了。下表给出了HTTP协议定义的所有方法:

方法工作
GET获取指定资源
POST提交指定资源
HEAD返回信息只有报文头
PUT替换指定资源
DELETE删除指定资源
CONNECT建立链接
OPTIONS设置参数
TRACE环回测试
PATH修改资源信息

GET后面紧跟的/是相对路径,/表示根路径,一般的Web应用会配置欢迎页面,比如index.html、index.jsp……如果GET给出的路径是/,则会返回/index.html或者/index.jsp的内容。

HTTP/1.1则是HTTP协议的版本号了,表示使用1.1版本的HTTP协议。

3 Servlet

对于Web应用的服务端来说,主要就是需要解析浏览器提交过来的HTTP协议内容,并生成对应的HTTP响应。

Servlet则是Web应用处理上述过程的标准。它将HTTP协议的请求抽象成ServletRequest,HTTP响应则抽象成ServletResponse对象。

public interface Servlet {
    public void init(ServletConfig config) throws ServletException;
    public ServletConfig getServletConfig();
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
    public String getServletInfo();
    public void destroy();
}

上面这段代码是Servlet接口的定义,其中的service方法是处理HTTP请求的核心方法。方法的参数中ServletRequest是HTTP的请求,ServletResponse是HTTP的响应。Servlet的功能就是根据ServletRequest的信息,生成对应的ServletResponse

public interface ServletRequest {
    public Object getAttribute(String name);
    public String getParameter(String name);
    public BufferedReader getReader() throws IOException;
    public String getLocalName();
    public String getLocalAddr();
    public int getLocalPort();
    public ServletContext getServletContext();
}

ServletRequest中有很多方法,上面截取了部分方法,主要是想说明ServletRequest对象可以获取到HTTP协议中传输的所有内容。

public interface ServletResponse {
    public String getCharacterEncoding();
    public String getContentType();
    public ServletOutputStream getOutputStream() throws IOException;
    public PrintWriter getWriter() throws IOException;
}

上面这段是ServletResponse的部分方法,不做赘述。值得注意的是,ServletRequest中有一个getReader方法,而ServletResponse中有一个getWriter方法。因为Request是客户端提交的请求,服务器需要去读它,而Response是服务器端给出的响应,服务器需要去写它。

4 后续

下面需要简单介绍下一个Web工程的目录结构,而后就可以开始徒手构建一个简单的Web应用了,等下篇再继续。

5 结论

HTTP协议是基础,抓包工具可以多用用。^_^

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在这篇文章中,我们将讨论如何从开始搭建Java后台管理系统。在开始之前,确保您已经安装了Java开发工具包(JDK)和Eclipse集成开发环境(IDE)。 1.选择适当的框架 在开始之前,我们需要选择一个适合我们项目的框架。Java有许多优秀的框架可供选择,例如Spring、Struts和Hibernate等。在本文中,我们将使用Spring框架来构建我们的后台管理系统。 2.创建Maven项目 我们使用Maven来管理我们的项目依赖项并构建我们的项目。使用Eclipse IDE,我们可以轻松地创建一个Maven项目。打开Eclipse并选择“File”>“New”>“Other”,然后选择“Maven”>“Maven Project”。 在下一个界面中,我们需要选择Maven项目的类型。我们选择“maven-archetype-webapp”,因为我们将构建一个Web应用程序。 3.添加Spring依赖项 我们已经创建了一个Maven项目,现在我们需要添加Spring框架的依赖项。在Maven项目中,我们可以通过编辑pom.xml文件来添加依赖项。 在pom.xml文件中,我们需要添加以下依赖项: ``` <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.0.RELEASE</version> </dependency> ``` 4.创建Spring配置文件 现在我们已经添加了Spring框架的依赖项,我们需要创建一个Spring配置文件。在Maven项目中,我们可以在“src/main/resources”目录下创建一个名为“applicationContext.xml”的文件。 在这个文件中,我们可以配置Spring框架的各种组件,例如控制器、服务和数据访问对象(DAO)等。 5.创建控制器 现在我们已经创建了Spring配置文件,我们需要创建一个控制器来处理Web请求。在Maven项目中,我们可以在“src/main/java”目录下创建一个包,然后在该包中创建一个控制器类。 控制器类应该使用Spring的@Controller注释进行注释,并且应该具有处理Web请求的方法。例如,以下代码片段显示了一个控制器类,它具有一个处理GET请求的方法: ``` @Controller public class HomeController { @RequestMapping(value = "/", method = RequestMethod.GET) public String home(ModelMap model) { model.addAttribute("message", "Hello World!"); return "home"; } } ``` 6.创建视图 现在我们已经创建了控制器,我们需要为该控制器创建一个视图。在Maven项目中,我们可以在“src/main/webapp/WEB-INF/views”目录下创建一个JSP文件。 在JSP文件中,我们可以使用JSTL(JavaServer Pages标准标记库)和EL(表达式语言)来显示动态内容。例如,以下代码片段显示了一个简单的JSP文件,它显示一个消息: ``` <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Spring MVC Example</title> </head> <body> <h1>${message}</h1> </body> </html> ``` 7.启动应用程序 现在我们已经创建了控制器和视图,我们需要启动我们的应用程序。在Eclipse IDE中,我们可以右键单击Maven项目,然后选择“Run As”>“Maven Build”。在“Goals”字段中输入“tomcat7:run”,然后单击“Run”按钮。 现在我们可以在Web浏览器中输入“http://localhost:8080/”来访问我们的应用程序。 这就是从开始搭建Java后台管理系统的基础。随着我们的项目的增长,我们可以添加更多的功能和组件来满足我们的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

镜悬xhs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值