• Servlet的一些API使用介绍


    final String rootPath = getServletConfig().getServletContext().getRealPath("/");  获取项目运行的根路径:

    rootPath + /WEB-INF/classes/account.txt   获取文件的项目绝对路径

    在eclipse 发布到Tomcat的debut调试当中,将会打印出D:jettTest.metadata.pluginsorg.eclipse.wst.server.core mp0wtpwebappsAuanyCompensate3/WEB-INF/classes/account.txt 

    前面的目录是work目录

    同时还能正常找到文件。。。。。。跪了

    发布到Tomcat之后,打印出来的rootPath是 D:Program Filesapache-tomcat-7.0.34webappsAuanyCompensate3/WEB-INF/classes/account.txt  

    仍然找到的是项目目录所在的位置。

    -----------------------------------------------------------------------

    关于HttpServletResponse : sendRedirect的目录问题

    sendRedirect("/uu");表示相对于服务器根路径。如http://localhost:8080/Test 
    用(则提交至http://localhost:8080/uu); 
    Forward代码中的"/uu"则代表相对与WEB应用的路径。如http://localhost:8080/Test应用(则提交至 
    http://localhost:8080/Test/uu); 

    尤其要注意的是forward的相对路径是相对当前路径,如果当前访问的路径是http://localhost:8080/AuanyCompensate3/servelt/xxxxx

    那么当前的forward跳转就是在xxxxx/servlet目录下,而事实上这个访问路径我们是可以自己设定的在web.xml或者注解中,有可能WEB-INF目录下就没有这个路径,所以我们这时需要在forward之前加上../用于跳出当前目录,找到真实的目录

    比如

    打包出来的工程目录

    ----AuanyCompensate3

                                    ----admin

                                    ----js

                                    ----jsp

                                    ----style

                ----WEB-INF

    此时如果要访问jsp/userLogin.jsp

    而当前的访问路径在http://localhost:8080/AuanyCompensate3/servelt/xxxxx  此时只能request.forward("../"+"/jsp/userLogin.jsp");是不是很麻烦?

    不过我们如果在配置访问url的时候不多加前缀,就不会出现这个问题。

    sendRedirect也可以直接发绝对地址:

    “http://” + request.getServerName() + ":" + request.getServerPort() + "" + request.getContextPath() +"servlet/xxxx"请求

    -----------------------------------------------------------------------------------

    放置client访问到Jsp文件,可以通过Filter来处理这种情况,将所有的关于jsp的客户端访问请求都转发到登录界面。

    -----------------

    模板模式: BaseHttpServlet SessionValidateServlet  抽象出来的一些servlet公共操作。

    Tencent QQ Wechat的 平台接入 也属于模板模式 

    ----------------------------------------------------------------------------------------------------------------------------------------------------

    在Java的工程项目中,如果资源文件在src/目录下,使用的时候需要加上new File("src/xxxxx");

    如果是跟src同级目录,则可以直接new File("xxxxxx"),并且打成jar包之后,所有的资源文件都会被清理到jar包的同级目录,这时src将不会存在,都会从classes的目录下寻找资源文件,所以不建议将资源文件放置到src目录下同事使用src路径,应该使用类路径的相对方式。

    在Java Web 工程当中,资源文件放置到src的目录下,直接使用new File("xxxx")就可以取到了。

    当然也可以使用Thread.currentThread().getContextClassLoader().getResourceAsStream("account.txt");说白了都是在classes的同级目录,就是当前类目录下。

    在java工程当中如果把account.txt放置到src下,则建议使用上述方式加载,而不是使用src/account.txt的方式加载。

    -----------------------------------------------------

     通过filter 和 listenr完成请求过滤和组件初始化

    通过使用javax.servlet.ServletContextListener  来初始化 HttpIO组件,日志组件,配置文件等等。

    通过使用Filter 来完成jsp请求的过滤(具体可以看有无session),和admin文件夹下jsp请求的过滤,admin下的访问必须有root用户名才行

    可以通过filter-mapping 来配置访问过滤器

    /admin/*

    /jsp/*

    filter listener servlet  这三项配置在web.xml当中很重要,记得还有个session的listener

    http://blog.csdn.net/opnmzxcvb/article/details/4554329

    ---------------------------------------------------------------------------------------

    在Jsp页面当中,/代表绝对路径 没有/代表相对路径 

    比如要使用Style下面的css样式或者js 则只需要使用Stype/xxx js/xxxx

    还有就是每个jsp页面都需要使用

    String path = request.getContextPath();这段什么用

    这样的代码是在jsp里出现的吧, 那么他的含义就是为了得到一个路径,做动态网站时,需要提交form表单在表单的action里面就会这样来写 action="<%=path %>/add.do" 这样来提交到相应的servlet中去,这样可以避免路径的错误,而采用这样的相对路径会更好些
    答:request.getContextPath()应该是得到项目的名字,如果项目为根目录,则得到一个"",即空的字条串, 如果项目为abc, <%=request.getContextPath()% >/ 将得到abc/,服务器端的路径则会自动加上

    在JSP中我们总会出现一个路径问题比如:

    jstest001是项目名

    1、绝对路径

    <script type="text/javascript" src="/jstest001/ext/ext-base.js"></script>和

    2、相对路径

    <script type="text/javascript" src="/ext/ext-base.js"></script>

    在我们实际应用中,我们经常在jsp中使用到路径,可以有一些是从项目开始的绝对路径有一些是相对路径。而经常源码照抄过来不能运行。

    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

      <base href="<%=basePath%>">

    其实是上面这三句话搞的鬼,很简单的一句话。如果没有这三句话的话就可以直接写到绝对路径,但是有的话就要写相对路径

    绝对路径就是 href = “<%request.getContextPath()%>/servlet/xxxxxxx”

    有了上面的配置 直接写 servlet/xxxxx

  • 相关阅读:
    JS中变量的存储
    判断对象是否为空
    画一条0.5px的线
    js中字符串和正则相关的方法
    style.width与offsetWidth的区别
    querySelector() 方法
    针对iOS10的各种问题的解决方法
    ARC下需要注意的内存管理
    WKWebView与Js实战(OC版)
    WKWebView API精讲(OC)
  • 原文地址:https://www.cnblogs.com/wuxinliulei/p/5178436.html
Copyright © 2020-2023  润新知