web学习——项目的运行

          虽然学了这么久Java,但是还没咋接触web项目,拿着web项目都不知道从哪看起。今天,学习一下web项目的运行,在spring框架中,也不是特别的复杂。


首先,客户端的一个request请求,到服务器端的监听,生成request(和response对象),找到web.xml,根据里面的配置信息,经过监听,过滤器,web容器将请求传送到servlet, servlet处理完成之后返回,生成response对象,交给客户端。这就是一次简单的请求流程。



实例页面:


对web项目的执行过程的理解,内容包括1 http url       2 html、servlet、jsp       3 tomcat等。web项目的整个执行过程,从一个http请求如http://localhost:8080/test/login.action开始:

1 http url的形式主要有三种:

1.1http://localhost:8080/test/index.html,即静态页面 

1.2http://localhost:8080/test/index(后可附带传入参数),其中/index会映射到一个servlet类,

整个需要在test项目的web.xml中进行配置:

<?xml version="1.0" encoding="ISO-8859-1"?>  
<web-app xmlns="http://Java.sun.com/xml/ns/javaee"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  version="3.0"  
  metadata-complete="true">  
 <servlet>  
        <servlet-name>index</servlet-name>  
        <servlet-class>IndexSerlet</servlet-class>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>index</servlet-name>  
        <url-pattern>/index</url-pattern>  

    </servlet-mapping>  
</web-app>

执行过程是:

1)浏览器中输入http://localhost:8080/test/index

2)tomcat获取http://localhost:8080/test/index

3)根据web.xml中的<servlet-mapping>定位到tomcat的webapp文件夹下test项目的IndexServlet.class文件

4)执行IndexServlet.class文件,返回html代码

5)tomcat负责与浏览器进行交互,将html代码在浏览中进行显示

1.3http://localhost:8080/test/index.jsp(后可附带传入参数)

这种方式访问的其实就是1.2中的servlet方式。

执行过程:

1)浏览器中输入http://localhost:8080/test/index.jsp

2)tomcat获取http://localhost:8080/test/index.jsp

3)调用tomcat的work目录下test项目中index.jsp对应的servlet.class文件例如index_jsp.class(由jsp到servlet类的过程是tomcat自动转换的)

4)执行index_jsp.class文件,返回html代码

5)tomcat负责与浏览器进行交互,将html代码在浏览中进行显示

进行显示

1.4http://localhost:8080/test/index.action(后可附带传入参数)

这种方式,一般是使用了struts等框架实现的。

执行过程:

1)浏览器中输入http://localhost:8080/test/index.action

2)tomcat获取http://localhost:8080/test/index.action

3)根据web.xml中的struts映射配置,定位到tomcat的webapp文件夹下test项目中对应的class文件,例如index.class文件

4)执行index.class文件,并且struts框架会对指定jsp页面进行渲染,在浏览器显示:

例如struts框架,通过在struts.xml配置文件中设置对哪个jsp页面进行解析,生成html代码:

<action name="login" class="buct.scanner.action.LoginAction">
<result name="success">/login.jsp</result>
<result name="input">/index.jsp</result>
</action>

5)tomcat负责与浏览器进行交互,将html代码在浏览中进行显示

整个渲染过程是由struts框架完成的(即通过程序的运行过程中,调用struts的jar包中的class,jar包中的class运行过程中根据需要会对struts.xml配置文件进行解析),而不是tomcat完成。


=========综合分析一下几种方式的演变过程========

发展顺序是:

1http://localhost:8080/test/index.html

2http://localhost:8080/test/index

3http://localhost:8080/test/index.jsp

4http://localhost:8080/test/index.action

下面说说为什么要如此演变,是为了解决之前方式的什么弊端或者问题?

1)http://localhost:8080/test/index.html即静态页面的方式,只能加载静态页面,如果我新建了一个用户,要进行saveAdd操作,这种方式是不能实现的。

2)所以有了http://localhost:8080/test/index即servlet的方式,这种方式可以通过servlet.class文件进行后台数据库操作,并拼接html代码在浏览器中进行显示。

3)既然有了http://localhost:8080/test/index即servlet这种方式,为什么sun公司还要发明jsp?因为servlet虽然可以实现数据库操作,但是要拼接html,这种方式很不直观很不形象,所以发明了jsp。在jsp中既可以书写java代码访问数据库,又可以直观的看到html代码,如这个例子这样http://zhidao.baidu.com/link?url=nraE1vPnTZ1IkkTYIyqO0iqahx71IfoDc0yNO89zhFryjDiotC9l-qOshTeHhAWgb9caNFAGuGOEzYpwU64YFq。

4)既然有了jsp这种方式,为什么还要http://localhost:8080/test/index.action这种使用struts等框架的方式?因为jsp虽然可以书写Java代码访问数据库,又可以直观的看到html,但是html代码和java代码混在一起,不利于程序的可读性,代码书写还是比较混乱。所以有个struts、springmvc、struts等方式,实现java代码和html代码的分离即区分前端和后端,java代码在后端书写,html代码在jsp中书写并配上参数传递机制。

其实http://localhost:8080/test/index.action方式及struts等框架方式,是对http://localhost:8080/test/index即servlet的方式的升级:①servlet方式返回的是html代码(这些是程序员自己做的),然后tomcat接受html代码,并与浏览器交互,在浏览器中显示②struts通过对某类中的指定jsp代码进行解析并返回html代码(这些是struts做的,程序员不需要做,程序员只需要在struts.xml中指定该类要显示的jsp,并书写jsp界面),然后tomcat接受html代码,并与浏览器交互。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值