上个星期我们在学JavaEE,全班就我一个人在用idea,所以配置的时候出现了很多的问题,查了好多博客和各种网上的解释,很多都不适用我的问题/(ㄒoㄒ)/~~。终于在我综合了各种问题,被我成功的解决了。为了帮助更多的人,我会用最详细的步骤来解释如何成功配置struts2的框架。
目录
我遇到的问题
先说说我遇到的问题,主要就一个: 严重 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 一个或多个筛选器启动失败。
咱们就看第二个的报错信息,因为第一个只是你导入的包太多了,它启动的比较慢。剩下的都是因为筛选器启动失败而引发的连锁反应。
检查你的web.xml是否输入了以下代码;
*很多教程中<filter-class>都是导入的这个路径:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
在目前最新的版本中,ng已经被舍去了。
如果输入的没有问题那么就是你导入的Struts2的包出现了问题。
配置步骤
注意!!!!
前置条件:Tomcat的版本是9
Struts2的版本是2.5.26
JDK选择1.8(可以直接在idea中下载)
配置tomcat
1.首先新建一个项目
(网上很多教程都是让从插件库里下载Struts,然后新建项目选择JavaEE,我尝试过,比较麻烦还没成功)
2.点击添加配置
3.点击添加新配置
4.选择Tomcat服务器的本地
5.出现一个警告, 点击修复
6.根据以下步骤,先点击模块
然后新建web模块
7.根据提示创建工件
8.创建完后会自动跳到以下页面,直接点击确定
配置struts2
9.至此服务器以配置完毕 ,然后点开test项目,在web-inf目录下新建一个lib目录
10.将下好的struts2的包粘贴到lib目录下
11.粘贴完成后将lib目录添加为库
12.编辑web.xml,添加以下代码 (如果有如何提示请忽略)
13.在src目录下添加struts配置(防止出错就用struts作为它的名字)
14.创建完成后输入以下代码 ,至此struts2的配置已完成
*注意里面的参数,action name由你自己命名,class是存放java类的路径,两条result中的jsp页面分别以你自己编写的名字来命名(本教程以我的为例)
测试
15.这时候就可以编写jsp和Java类了。在web目录下新建jsp文件(注意,不是web-inf)
我创建了error、login、welcome三个jsp文件,其中login是主页,负责输入登录信息的;error是登录失败后的报错页面,welcome是登录成功后的页面。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功</title>
</head>
<body>
<h3>已经成功登录!</h3>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="login" method="post">
用户登录<br>
<label>
姓名:
<input type="text" name="username" id="username"/>
</label><br />
<label>
密码:
<input type="password" name="password" id="password"/>
</label><br />
<input type="submit" value="登录" />
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录失败</title>
</head>
<body>
<h3>登陆失败!</h3>
</body>
</html>
login.jsp中,action的目标要和struts.xml中你命名的action name相符合
16.在src下先新建一个软件包,我以action为包名(包名必须和struts.xml中class的路径一致)
在action包下新建LoginAction类(注意,test这个包我截屏错了,因为名字和项目名一样,所以没法改变,你们直接忽视就行)
详细代码如下(aaa是我自己定义的账户和密码)
package action;
import com.opensymphony.xwork2.Action;
public class LoginAction implements Action {
private String username;
private String password;
public String execute() throws Exception{
if (getUsername().equals("aaa")&&getPassword().equals("aaa")){
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;
}
}
最后,我们来测试一下吧,直接点击启动服务器
如果出现这个界面不要慌,直接在网址后面写上login.jsp
输入账户和密码,再点击登录
出现以下界面,恭喜成功了