java - session 变量未加载密码

标签 java jsp session struts2 struts2-jquery-plugin

问题有点长,但我觉得很有趣。请看一下。 我有一个名为“Menubaruser.jsp”的 jsp,如下所示:

<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
    <div id='cssmenu'>
            <ul>
                <s:url  id="userhome" value="/login.action?login.username=%{#session.username}&login.password=%{#session.password}"></s:url>
                <li><sj:a id="user_home" href="%{userhome}" targets="mainContent"><span>Home</span></sj:a></li>
                <%-- <li><s:a action="#"><span>Home</span></s:a></li> --%>

                <s:url  id="showProfile" value="/profile.action"></s:url>
                <li><sj:a id="profile_show" href="%{showProfile}" targets="mainContent"><span>Show Profile</span></sj:a></li>

                <s:url  id="editProfile" value="/editProfileLink.action"></s:url>
                <li><sj:a id="profile_edit" href="%{editProfile}" targets="mainContent"><span>Update Profile</span></sj:a></li>

                <s:url  id="signout" value="/logout.action"></s:url>
                <li><sj:a id="signout" href="%{signout}" targets="mainContent"><span>Sign Out</span></sj:a></li>
                <%-- <li class='last'><s:a action="#"><span>Contact Us</span></s:a></li> --%>
            </ul>
    </div>

实际发生的是,当用户登录时,用户名和密码被设置为 session 变量及其值。现在用户可以做任何他想做的事,比如更新个人资料、显示个人资料等。现在我想要的是当用户点击主页时,用户的主页必须出现,即用户登录时出现的页面。该页面被命名为 loginSuccess。 jsp打开对应login.action如下struts.xml:

 <action name="login" class="com.view.LoginAction" method="checkLogin">
        <result name="input">/loginPage.jsp</result>
        <result name="loginSuccessUser" type="chain">userHistory</result>
        <result name="loginSuccessAdmin">/loginSuccessAdmin.jsp</result>
        <result name="loginClicked">/loginPage.jsp</result>
    </action>
    <action name="userHistory" class="com.view.HistoryAction" method="UserHistory">
            <result name="showHistory">/loginSuccess.jsp</result>
    </action>

loginSuccess.jsp 包含一些来自用户历史操作的动态内容。我希望在单击主页时也加载内容。 现在发生的事情是当用户单击主页时,然后使用我发送的与单击对应的查询字符串调用操作 login.action,如“menubaruser.jsp”所示,但显示的 o/p 是它没有加载密码字段。它返回“输入”,显示服务器端密码验证错误为“需要密码”。

需要渲染的jsp命名为loginSuccess.jsp,代码如下:

<%@ taglib prefix="s" uri="/struts-tags"%>
       <jsp:include page="menubaruser.jsp"></jsp:include>
       <div style="width:898px"><br><center>Welcome Mr. <b><s:property value="#session.name"/> </b></center> </div> 
       <div id="ajaxdiv">
        <div id="ContentLeft">
            <jsp:include page="search.jsp"></jsp:include>
        </div>
        <div id="contentRight">
            <jsp:include page="topdeals.jsp"></jsp:include>
        </div>
       </div>
        <br>
        <div>
            <jsp:include page="userHistoryWidget.jsp"></jsp:include>
        </div>    

UserHistoryWidget.jsp如下:

    <%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>

    <div id="searchHeaderHistory">Booking History</div>
    <div class="CSSTableGenerator">
        <table>
            <colgroup>
                <col span="1" style="width: 5%;">
                <col span="1" style="width: 10%;">
                <col span="1" style="width: 8%;">
                <col span="1" style="width: 15%;">
                <col span="1" style="width: 15%;">
                <col span="1" style="width: 6%;">
                <col span="1" style="width: 6%;">
                <col span="1" style="width: 17%;">
                <col span="1" style="width: 18%;">
            </colgroup>

            <tr>
                <td>Ticket ID</td>
                <td>Booking Date</td>
                <td>Flight ID</td>
                <td>From</td>
                <td>To</td>
                <td>Total Fare</td>
                <td>Net Fare</td>
                <td></td>
                <td></td>
            </tr>

            <s:iterator value="ticketsList" var="ticket" status="stat">

                <tr>
                    <td align="center"><s:property value="#ticket.tid" /></td>
                    <td align="center"><s:property value="#ticket.bookingdate" /></td>
                    <td align="center"><s:property
                            value="#ticket.scheduleDetails.flightDetails.fid" /></td>

                    <s:if test="#ticket.flag==3">
                        <td><s:property
                                value="#ticket.scheduleDetails.flightDetails.routeDetails.via" /><br>
                            <s:property value="#ticket.scheduleDetails.via_dep_date" />&nbsp;<s:property
                                value="#ticket.scheduleDetails.via_dep_time" />hrs</td>
                    </s:if>
                    <s:if test="#ticket.flag==1 ||#ticket.flag==2||#ticket.flag==4">
                        <td><s:property
                                value="#ticket.scheduleDetails.flightDetails.routeDetails.source" /><br>
                            <s:property value="#ticket.scheduleDetails.source_dep_date" />&nbsp;<s:property
                                value="#ticket.scheduleDetails.source_dep_time" />hrs</td>
                    </s:if>
                    <s:if test="#ticket.flag==1 ||#ticket.flag==2||#ticket.flag==3">
                        <td><s:property
                                value="#ticket.scheduleDetails.flightDetails.routeDetails.destination" /><br>
                            <s:property value="#ticket.scheduleDetails.dest_arr_date" />&nbsp;<s:property
                                value="#ticket.scheduleDetails.dest_arr_time" />hrs</td>
                    </s:if>
                    <s:if test="#ticket.flag==4">
                        <td><s:property
                                value="#ticket.scheduleDetails.flightDetails.routeDetails.via" /><br>
                            <s:property value="#ticket.scheduleDetails.via_arr_date" />&nbsp;<s:property
                                value="#ticket.scheduleDetails.via_arr_time" />hrs</td>
                    </s:if>
                    <td align="center"><s:property value="#ticket.fare" /></td>
                    <td align="center"><s:property value="#ticket.dealFare" /></td>
                    <td style="width: 150px" align="center">
                        <s:url  id="getPassengers" value="/getPassengers.action">
                            <s:param name="Tid" value="#ticket.tid" />
                        </s:url>
                         <sj:a id="link_%{#stat.index}" href="%{getPassengers}" targets="ajaxdiv" cssClass="orangebuttonsmall">
                                View Details    
                         </sj:a>
                    </td>
                    <td style="width: 150px" align="center">
                        <s:a action="cancel" id="button1" style="float:left" cssClass="orangebuttonsmall">Cancel Ticket
                             <s:param name="Tid" value="#ticket.tid"></s:param>
                        </s:a>
                    </td>
                </tr>
            </s:iterator>

        </table>
    </div>

现在我希望的是每当此 loginSuccess.jsp 打开时加载 userHIstoryWidget.jsp 内容。因此,当我在 menubaruser.jsp 中单击主页时,我希望使用 session 中存在的值设置用户名和密码的值来调用“登录”。如果此操作成功发生,那么由于操作链接,将调用“userhistory”操作并显示包含所需数据的 loginSuccess.jsp。

问题是,当我发送带有用户名和密码值的查询字符串时,它没有设置密码值,而是将密码设为空,因此返回“input”,这使 loginPage.jsp 呈现 actionerror“Password empty” ”。 我还尝试在密码中发送一个常量值而不是 session 值,但问题仍然存在。它设置用户名的值但密码失败。

LoginPage.jsp如下:

<%@ taglib prefix="s" uri="/struts-tags"%>
            <%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
            <jsp:include page="menubar.jsp"></jsp:include>
            <br><br><br><br><br><br>              
            <s:form action="login" method="post" theme="css_xhtml" cssClass="form1" style="margin:0 211px">
                <div class="searchHeader">LOGIN</div>
                <div id="error">
                    <s:property value="errormsg"/>
                </div>
                <s:textfield label="Username" name="login.username" />
                <s:textfield label="Password" name="login.password" />
                <div class="submitButton">
                    <sj:submit value="SUBMIT" targets="mainContent"/>
                </div>
            </s:form>

请帮忙...

最佳答案

根据我对上述帖子的理解,您正在尝试将 value 属性设置为 password type 。

由于某些安全问题,这是不可能的。

您可以使用文本框并使用一些 java 脚本代码来更改输入类型中显示的字符的可见性。

关于java - session 变量未加载密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19355504/

相关文章:

java - 尝试使用hibernate从MySQL获取数据,并显示在thymeleaf列表中(循环)

java - Web服务器中加载的类的注释是com.sun.proxy.$Proxy52?

java - 避免 JSP 和 HTML 标记语法模糊(<、/和 > 字符)的方法?

java - 如何在jsp中检查togglz的 Activity 和非 Activity 状态?

php - 警告 : session_start() [function. session 启动]:无法发送 session 缓存限制器

Java EE - HTTP 错误 404 - 资源不可用 - 在页面上点击 "Submit"按钮后

java - 如何在 Java Swing 中对齐组件?

java - 如何在Java中从文件中读取特定单词后的int

php - 在 symfony 中丢失经过身份验证的 token

javascript - 如何使用js获取session的值