严重: Servlet.service() for servlet [default] in context with path [/mobile_scm] threw exception java.

具体的报错如下:

严重: Servlet.service() for servlet [default] in context with path [/mobile_scm] threw exception
java.nio.file.InvalidPathException: Illegal char <:> at index 3: jar:file:\E:\Users\Administrator\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\mobile_scm\WEB-INF\lib\struts2-core-2.3.24.jar

相信大家在学习struts2时很多人碰到了这样的问题,我在本博客论坛上没有找到一个能解决我的问题的方案,大多数都是在打着标题划水,说什么核心jar包必须放在lib中来,然而是个初学者就知道按照教程来做放在lib中,对此无力吐槽,在此我特别强调一下我的问题,这是一个版本问题,重要的事情说三遍,版本问题,版本问题,版本问题。我之前用的是jdk10 ,tomcat8.5,然后struts2是2.3.24,这样的版本是不能够成功加载struts2的,当然我的struts2配置是没有问题的。

解决方案如下:

在struts2的官网中下在2.5.18版本的struts包,就能和以上所提及的工具版本适应。

我的建议是自己学习的话,jdk假如你用了老版本的问题话,你就用tomcat和struts2的老版本,再要么就都用最新版本的,避免出现这些浪费时间的问题。

 

 

在这里我来总结一下struts2的配置方法。

struts2是基于filter的,所以需要在web.xml中将struts2加载起来,这一步是核心,少了这个strut2是不可能成功被加载的。

     <filter>
        <filter-name>struts2</filter-name>
        <filter-class> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>         
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

向我这样配置就没有问题了。

然后是加载自己所需配置的struts.xml文件

    <constant name="struts.devMode" value="true" />

    <package name="str"  extends="struts-default">
        <action name="login" class = "mobile_scm.Login" method="execute">
            <result name = "toOKJSP">/ok.jsp</result>
            <result name = "toNOJSP">/no.jsp</result>
        </action>
    </package>

action类

    private String username;
    private String password;
    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 String execute() {
        System.out.println("你好");
        UserInfoService usRef = new UserInfoService();
        if(usRef.login(username,password)) {
            return "toOKJSP";
        }
        else {
            return "toNOJSP";
        }
    }

第二类

public class UserInfoService {

    public boolean login(String username, String password) {
        if(username.equals("a") && password.equals("aa")) {
            return true;
        }else {
            return false;
        }
        
    }

}

jsp界面

    <form action="login.action">
    username:<input type = "text" name = "username"><br>
    password:<input type = "password" name = "password"><br>
    <input type = "submit" value = "login">
    </form>

然受就是no.jsp和ok.jsp很简单的两个界面。

这就是一个比较简单的struts2的示例。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值