为了不让用户通过url访问jsp文件,我把jsp文件放在/WEB-INF/jsp里,这样起到一种保护作用。但是,
在页面上怎么才能链接到这些文件呢?我看有人说要用action,具体怎么用,有人能给出代码实例吗?
谢谢!

解决方案 »

  1.   

    action中你可以配置result, result中你就指定页面是WEB-INF/jsp/a.jsp.
      

  2.   

    谢谢,这个我知道,
    我指的是在页面上直接做个链接,类似于<a href="/WEB-INF/jsp/aaa.jsp">这样的,但是这样不能直接访问页面,那应该如何写呢
    请指教
      

  3.   

    action.呵呵写一个action专门负责导航.
    和一般的action一样的
      

  4.   

    请问jsp页面上这个action应该如何调用?这个不太明白
      

  5.   

    我对你这句话不明白?
    哪个action???
      

  6.   

    可能我说得不太清楚,简单的我,我的想法是这样的:
    Java:
    public class aaa extends ActionSupport{
    ...
    public String execute() throws Exception
    {
      return "success";
    }
    }struts.xml:
    ...
    <action name="mainMenu" class="srvmis.action.aaa">
         <result name="success">/WEB-INF/jsp/mainmenudisplay.jsp</result>        
    </action>
    ...JSP:
    那么,页面上原本是
    <a href="<s:url value="/WEB_INF/jsp/mainmenudisplay.jsp" />"></a><br>
    这样的形式,jsp文件改放在="/WEB_INF/jsp/下面不能直接访问,要用action来导航,
    页面上action的用法:
    (1)用<s:form action="" class="">的形式,要submit,即点击后才能提交,是不是不妥
    (2)用<s:action >标签,又是自动提交,不是链接的形式。
    都不合适
    那么页面上的这个action又如何写呢?请指教,谢谢!
      

  7.   

    用<html:link action="">就可以了
      

  8.   

    <html:link action="">是struts1.2的标签把,我用的是struts2,请问2里面有没有类似的标签?
      

  9.   

    在struts.xml中这样配置action:
    <action name="xxx">
      <result>/WEB-INF/test.jsp</result>
    </action>
    由于没有配置class属性,默认使用的是ActionSupport
      

  10.   

    补充一句,这个action仅仅返回一个success字符串
      

  11.   

    还是发表一下自己的看法:
    你想不通过服务器端action转向直接链接到受保护的资源中??
    那/WEB-INF还拿来做什么??资源保护的初衷又是什么????
    不知道我理解错没,继续关注
      

  12.   

    回14的兄弟
    就是因为想保护资源,才把jsp文件放到/WEB-INF下面,原本从本页面进入下一个页面只需要做个<a href>就行了,这样一放,不知道怎样用action转向嘛才来问的
    麻烦给点具体的简单代码来说明,好吧?
      

  13.   

       <s:url id="url" action="action2" />
       <s:a href="%{#url}">link</s:a>
      

  14.   


    貌似没有,至少default xml里面没看到
      

  15.   

    成功了!贴一下程序供参考:
    JSP:
    <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <%@taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
      </head>
      
      <body>
        This is my JSP page. <br>
        <s:url id="url" action="main"></s:url>
        <s:a href="%{#url}">link </s:a>
      </body>
    </html>struts.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
    <package name="aaa" extends="struts-default">
            <action name="main" class="aaa.IndexAction">
                <result name="success">/WEB-INF/jsp/main.jsp</result>
            </action>
    </package>
    </struts>IndexAction:
    package aaa;import com.opensymphony.xwork2.ActionSupport;public class IndexAction extends ActionSupport{

    public String execute() throws Exception
    {
    return "success";
    }}主要是标红的那两句不知怎么写,后来看了兄弟的提示去查了查,发现<s:url >也有action,这样就简单了。
    这段程序将main.jsp放在WEB-INF/jsp下面,用户不能直接输入url进行访问,实现了文件保护。自己还要学习的东西很多,谢谢orz_ORZ_orz兄弟,还有其他热心的朋友,呵呵
      

  16.   

    在这里还有一个疑问:
    要访问的文件url是直接配置在struts.xml里面,如/WEB-INF/jsp/main.jsp
    如果是这个url放在数据库,链接的时候需要把它读出来,怎么处理呢