zoukankan      html  css  js  c++  java
  • 页面跳转+路径问题

     

     

     

      

    绝对路径:是从盘符开始的路径,形如             // 多用在后台中
    C:windowssystem32cmd.exe
    相对路径:是从当前路径开始的路径                //多用在前端

    /开头的通常表示绝对路径:

    /表示站点路径的场景如下(其他情况是在服务器上跳转  / 表示项目的根)

    (1)  重定向

    (2)    超链接

    (3)    action表单

    在web项目中,为了安全,可能需要把jsp文件放在WEB-INF目录下,这样如果我们的页面中出现超链接a标签或者js的location.href去直接转向到WEB-INF下的某一个jsp页面,那么就会引用不到,因为这样的请求方式是客户端的请求,而WEB-INF页面只对服务端开放,对客户端是不可见的。(只能通过转发的方式进入)

    1  超链接  

    <body>
    	<a href="/tiaozhuan/views/index.jsp">超链接jsp跳转</a>   //进入jsp页面
    	<a href="/tiaozhuan/servletA">超链接跳服务器(注解)</a>
    	<a href="/tiaozhuan/servletB">超链接跳服务器(web.xml)</a>
    </body>
    
    
    (1)   方式1  通过注解进入servlet
    @WebServlet("/servletA")
    public class ChaoLianJieServlet extends HttpServlet{
    
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		System.out.println("doGet"+Thread.currentThread().getName());
    		doPost(req, resp);
    	}
    
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		System.out.println("doPost"+Thread.currentThread().getName());
    		//doGet(req, resp);
    	}
    
    (2)  方式2  通过web.xml配置进入servlet
    public class ChaoLianjieServlet1 extends HttpServlet{
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		System.out.println("ChaoLianjieServlet1 +doPost");
    		doGet(req, resp);
    	}
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		doPost(req, resp);
    	}	
    }
    
    
    web.xml
    
    
    <servlet>
      	<servlet-name>servletB</servlet-name>
      	<servlet-class>com.rl.chaolianjie.ChaoLianjieServlet1</servlet-class>
      </servlet>
      <servlet-mapping>
      	<servlet-name>servletB</servlet-name>
      	<url-pattern>/servletB</url-pattern>
      </servlet-mapping>
      
    

     action :

    <form  method="post" action="/tiaozhuan/servletB">
    
    	<input type="submit" value="submit"/>
    </form>
    
    
    
    <servlet>
      	<servlet-name>servletB</servlet-name>
      	<servlet-class>com.rl.chaolianjie.ChaoLianjieServlet1</servlet-class>
      </servlet>
      <servlet-mapping>
      	<servlet-name>servletB</servlet-name>
      	<url-pattern>/servletB</url-pattern>
      </servlet-mapping>
      
    
    public class ChaoLianjieServlet1 extends HttpServlet{
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		System.out.println("ChaoLianjieServlet1 +doPost");
    		//doGet(req, resp);
    	}
    }
    

    重定向和转发:

    <form  method="post" action="/tiaozhuan/servletA">
    
    	<input type="submit" value="submit1"/>
    </form>
    
    <form  method="get" action="/tiaozhuan/servletA">
    
    	<input type="submit" value="submit2"/>
    </form>
    
    
    @WebServlet("/servletA")
    public class ChaoLianJieServlet extends HttpServlet{
    
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		resp.sendRedirect("/tiaozhuan/views/index.jsp");
    	}
    
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		req.getRequestDispatcher("/views/index.jsp").forward(req, resp);
    		
    	}
    

      读取文件/获取初始化参数:

        1  配置

    <servlet>
      	<servlet-name>servletB</servlet-name>
      	<servlet-class>com.rl.chaolianjie.ChaoLianjieServlet1</servlet-class>
      	<init-param>
      		<param-name>name</param-name>
      		<param-value>zhang</param-value>
      	</init-param>
      	<load-on-startup>1</load-on-startup>
      </servlet>
    

      

        2   获取

            



          String path=getServletContext().getRealPath("/file/web.xml");    System.out.println(path); BufferedReader br=new BufferedReader( new FileReader(new File(path))); System.out.println(br.readLine()); //获取初始化参数 String name=getServletContext().getInitParameter("name"); String nameconf=getServletConfig().getInitParameter("name"); resp.getWriter().print(name+"getServletContext");//null resp.getWriter().print(nameconf+"getServletConfig");//有值

      

    1.FileTest.class.getResource("")
      得到的是当前类FileTest.class文件的URI目录。不包括自己!

      如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/

      2.FileTest.class.getResource("/")
      得到的是当前的classpath的绝对URI路径。

      如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

      3.Thread.currentThread().getContextClassLoader().getResource("")
      得到的也是当前ClassPath的绝对URI路径。

      如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

      4.FileTest.class.getClassLoader().getResource("")
      得到的也是当前ClassPath的绝对URI路径。

    服务器上:没加 /

    System.out.println("bb"+Thread.currentThread().getContextClassLoader().getResource(""));
    System.out.println("cc"+ChaoLianJieServlet.class.getResource(""));

    bbfile:/D:/work/eclipse/workspaceOne/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/tiaozhuan/WEB-INF/classes/
    ccfile:/D:/work/eclipse/workspaceOne/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/tiaozhuan/WEB-INF/classes/com/rl/chaolianjie/

    服务器上 :  加 了/

    System.out.println("aa"+Thread.currentThread().getContextClassLoader().getResource("/"));
    System.out.println("dd"+ChaoLianJieServlet.class.getResource("/"));

    aafile:/D:/work/eclipse/workspaceOne/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/tiaozhuan/WEB-INF/classes/
    ddfile:/D:/work/eclipse/workspaceOne/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/tiaozhuan/WEB-INF/classes/

    本地:

    URL path=FileResourse.class.getResource("/");
    System.out.println(path);     // file:/D:/work/eclipse/workspaceOne/tiaozhuan/build/classes/
    URL path1=FileResourse.class.getResource("");
    System.out.println(path1);    //file:/D:/work/eclipse/workspaceOne/tiaozhuan/build/classes/com/rl/chaolianjie/
    URL a=Thread.currentThread().getContextClassLoader().getResource("");
    System.out.println(a);          //file:/D:/work/eclipse/workspaceOne/tiaozhuan/build/classes/
    URL b= Thread.currentThread().getContextClassLoader().getResource("/");
    System.out.println(b);         null
    URL c=Thread.currentThread().getClass().getResource("");
    System.out.println(c);         null
    URL path2 = Thread.currentThread().getContextClassLoader().getResource("/");
    URL path3 = Thread.currentThread().getContextClassLoader().getResource("");
    System.out.println(path2);      null
    System.out.println(path3);     file:/D:/work/eclipse/workspaceOne/tiaozhuan/build/classes/

      服务器上:加了/  Thread.currentThread().getContextClassLoader().getResource("/")和当前类.class.getResource("/")的值都是classpath的绝对URI路径

           不加/  Thread.currentThread().getContextClassLoader().getResource("")得到的是classpath的绝对URI路径     而当前类.class.getResource("")的值是包结构下

      本地   加了/    当前类.class.getResource("/") 是classpath 下绝对URI    , Thread.currentThread().getContextClassLoader().getResource("/")是null

           不加/   当前类.class.getResource("")是当前孢结构下          T hread.currentThread().getContextClassLoader().getResource("")  是 classpath 下 绝对URI 路径

  • 相关阅读:
    typescript提示implicitly has an 'any' type 问题
    element-ui中的table可分页多选功能-记住上一页勾选数据
    CSS加载会阻塞页面显示?
    网络流(EK算法)
    网络流(dinic算法)
    洛谷p1120小木棍(剪枝优化)
    三种背包模板
    HDU2089-不要62(数位dp)
    windy数(数位dp)
    素数判定(待填坑)
  • 原文地址:https://www.cnblogs.com/MyJavaStudy/p/9129210.html
Copyright © 2011-2022 走看看