2301_78998594 2024-01-08 10:36 采纳率: 100%
浏览 7
已结题

Struts2jsp页面无法传值和跳转到Action,该怎么办?

Struts2jsp页面无法传值和跳转到Action,该怎么办?
错误页面:

img

出现这个情况怎么办?
index.jsp代码

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struts Demo!</title>
</head>
<body>
    <form action="login" method="post">  <!--如果使用<s:form>标签会报错 -->
    用户名:<input type="text"name="userName" id="userName"><br>
    密码:<input type="text"name="password" id="password"><br>
    <input type="submit" value="登录">
    </form>
</body>
</html>

struts.xml 代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration2.5//EN"
  "http://struts.apache.org/dtds/struts-2.5.dtd">
  <struts>
      <package name="default" namespace="/" extends="struts-default">
        <action name="login" class="com.demo.loginAction">
          <result name="success">/success.jsp</result>
          <result name="error">/error.jsp</result>
        </action>
      </package>
  </struts>

loginAction.java代码

package com.demo;
import com.opensymphony.xwork2.ActionSupport;

public class loginAction extends ActionSupport 
{
    private static final long serialVersionUID = 1L;
    private String userName;
    private String password;
    private loginModel loginMsg;
    public String execute() throws Exception{
        loginMsg = new loginModel("登录成功!","登录失败!");
        if(userName.equals("tong")&&password.equals("123456")) {
            return "success";
        }else {
            return "error";
        }
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public loginModel getLoginMsg() {
        return loginMsg;
    }
    
    public void setLoginMsg(loginModel loginMsg) {
        this.loginMsg = loginMsg;
    }
}

web.xml 代码

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <jsp-config>
    <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
        <taglib-location>/WEB-INF/lib/struts-tag.tld</taglib-location>
    </taglib>
</jsp-config>
  <display-name>strutsLoginDemo</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  <filter-name>struts2</filter-name>
  <filter-class>
  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  </filter-class>
  </filter>
  <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>*.jsp</url-pattern>
</filter-mapping>
</web-app>

文件目录结构:

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-08 12:24
    关注

    【以下回答由 GPT 生成】

    根据问题的描述,我可以提供以下解决方案:

    1. 确保在struts.xml文件中正确配置与登录操作相关的action,以便可以与index.jsp建立联系。请确保在struts.xml文件中存在如下配置:

    ```xml

    success.jsp error.jsp ```

    这里的login即为action的名称,com.example.LoginAction为处理登录逻辑的action类,method="execute"表示请求该action时调用的方法为execute,登录成功时跳转至success.jsp,登录失败时跳转至error.jsp

    1. 在action类中编写一个方法来处理登录,并确保正确接收和处理从index.jsp页面传递过来的参数。创建一个名为LoginAction的Java类,并在其中定义一个名为execute的方法,代码示例如下:

    ```java public class LoginAction { private String username; // 用于接收用户名参数 private String password; // 用于接收密码参数

       // Getter和Setter方法
       // ...
    
       public String execute() {
           // 处理登录逻辑
           if (username.equals("admin") && password.equals("123456")) {
               return "success";  // 登录成功,跳转至success.jsp
           } else {
               return "error";  // 登录失败,跳转至error.jsp
           }
       }
    

    } ```

    在该方法中,根据接收到的用户名和密码进行登录校验。如果用户名和密码匹配,则返回success,否则返回error

    1. 在action中指定一个成功登录后的跳转页面,以便在登录成功后显示相应的信息。在上述的struts.xml文件中,我们已经指定了登录成功时跳转至success.jsp,您可以在该页面中展示登录成功后的信息。

    ```jsp <%-- success.jsp --%>

    <html><head><title>Login Success</title></head><body>

    Login Success!

    Welcome, !

    </body></html>

    ```

    在成功页面中,我们展示了登录成功的提示以及通过request.getParameter("username")获取到的登录用户名。

    希望以上解决方案能够帮到您。如果您有任何进一步的问题或需要更多帮助,请随时告诉我。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月24日
  • 已采纳回答 1月16日
  • 创建了问题 1月8日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上