打字比看书更累人

时间:2020-12-10 15:35:18

javaweb目录结构
web程序部署在tomcat下面,一个webapps文件可以部署多个不同的web应用
如果不能使用上下文路径,web程序需要放到webapps/ROOT下面。ROOT文件下的程序使用
htt://localhost:8080/访问
根据server规范,web程序自己有特定的结构,部署时必须按装这样的结构部署。结构如下
(1)文件夹web-inf,文件夹web-inf。tomcat会隐藏该文件夹下的所有文件,保护它们不能通过游览器直接访问
(2)web-inf/web-inf/web.xml ,指web程序最主要的配置文件
(3)web-inf/calls ,class类几乎都放在该文件下面,包含servlert类
(4)jar文件都放在该文件下面
  实现servlet
该例子利用向导新建servlet,l取名类为fistservlrt.该servlet.在该servlet例子中覆盖了doget(),dopost()以及getlastmodified()3个方法
代码如下
public class firstservlet extends httpservlet{
          public void doget(httpservletrequest request, httpservletresponseresponse)
                  throws servletException, IoException{
                    this.log("执行doget方法");
                    this.execute(request, response);                                                          这几段代码用于调用执行doget方法
 
}
public void dopost(httpservletrequest request, httpservletresponseresponse)
                  throws servletException, IoException{
                    this.log("执行dopost方法");
                    this.execute(request, response);                                                               这几段代码用于调用执行dopost方法

}
@override
public long getlastfied(httpservletrequest, request){
         this.log("执行getlastmodified方法");                                                                            这几段代码用于调用执行getlastmodified方法返回-1
         return -1;


          public void doget(httpservletrequest request, httpservletresponseresponse)
                  throws servletException, IoException{
                     response.setcharacterencoding("utf-8");
                     request.setcharacterencoding("utf-8");
                     stringrequestURI=erquest.getrequestURI();
                     string method=request.getmethod();
                     stringparam=request.getparameter("param");
                     response.setcontentype("text/html");
                     printwrite out =response.get.getwriter();
                     out.println("<!doctype html public \"-w3c//dtd html 4.01 transitional//en\">")
                     out.println("<html>")
                     out.println("<head><tiltle>a servlet </title></head>");
                     out.prion("以"+method+"方式访问该网页,去到的param参数为"+param+value"<br/>");
                     out.println("<from action='"+requestURI+"'method='get'">"
                    <input type='text'name='param'value='param string'><input type=''submit value='以get方式查询页面"+requestURI+"'>
                    </from>");
                      out.println("<from action='"+requestURI+"'method='post'">"
                    <input type='text'name='param'value='param string'><input type=''submit value='以post方式查询页面"+requestURI+"'>
                    </from>");
                     out.println("<script>document.write('本页面最后更新时间:‘+document.lastmodified');</script>");
                     
                     out.println("</body>");
                     out.pritln("</html>");
                     out.flush();
                     out.clse();


}
分析
如果以get方法访问页面时在执行doget前会先执行getlastmodified. 如果游览器发现返回的数值与上次访问的数值相同,则认为该文档此时并没有更新
,所以游览器采用缓存而并不去执行doget方式如果getlastfied返回数值-1.则认为是此时更新的转而去执行doget函数
并且在最后的时候还返回生成相应的更新时间,该时间是相对于19701月1日08:00:00的毫秒数
配置<servlet>
光有servlet类文件是不足的,我们还的让web容器知道怎样去访问这个servlet,也就是说需要配置servlet的类文件与访问方式。而这个配置我们可以在web应用程序
的描述文件web.xml;里面去完成
我们首要做的便是配置servletde 名称以及类名。举例如下
<servlet>
           <servlet-name>firstservlet</servlet-name>
            <servlet-class>com.helloweenvsfei.servlet.firstserv;et</servlet-class>
</servlet>
其中这里强调对于属性<servlet-name>与<servlet-class>是必须配置的
并且必须保证<servlet-name>在web.xml中是唯一的
配置<servlet-mapping>
在配置好servlet名称与类之后还需要配置servlet的访问方式。访问方式使用的标签是
<servlet-mapping>举例如下
<servlet-mapping>
       <servlet-name>firstservlet</servlet-name>
       <url-pattern>/servlet/firstservlet</url-pattern>
<servlet-mapping>
其中<url-pattern>配置该servlet的访问方式在其前面加上web应用程序的路径再加上服务器域名端口就是访问该servlet的网址
例如 http://locahost:8080/servlet/servlet/firstservlet
在<url-patten>中允许使用通配符“*”和“?”其中*表示任意长度的字符?代表任意字符