一、Struts2环境的搭建:
1、添加jar包,注意jar冲突问题
二、通过代码验证以上配置是否成功
登录
1、创建登录页面 ,例如:index.jsp
2、创建Action类,并重写execute方法,例如:LoginAction.java
1.3、在src下创建struts.xml
2. 1、创建相关页面
error.jsp
1、添加jar包,注意jar冲突问题
2、在web.xml中添加struts2的核心控制器
3、在src下创建struts.xml
二、通过代码验证以上配置是否成功
登录
1、创建登录页面 ,例如:index.jsp
2、创建Action类,并重写execute方法,例如:LoginAction.java
3、在struts.xml配置文件中,添加action类的配置
目录:
1.1、添加jar包,注意jar冲突问题
1.2、在web.xml中添加struts2的核心控制器
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<filter>
<!--定义核心Filter的名字-->
<filter-name>struts2</filter-name>
<!--定义核心Filter的实现类-->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!--Filterdispatcher用来初始化Struts2并且处理所有的web请求-->
<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>
</web-app>
1.3、在src下创建struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 常量
struts.devMode
true - 打开开发模式,即修改struts.xml文件之后,默认自动部署
false - 产品发布模式,即修改struts.xml文件之后,不会自动部署
-->
<constant name="struts.devMode" value="true"></constant>
<!-- package(包) - 用于解决action重复性问题
name - 包名,必须要唯一
namespace - 命名空间(可选项)
为空或值为"" - 判定url中最后的路径是否存在,如果存在则访问
"/" - 根路径
推荐博客:http://blog.youkuaiyun.com/menghuannvxia/article/details/47169991
extends - 继承关系
-->
<package name="default" namespace="/" extends="struts-default">
<!-- 配置Action类
name - 在一个package中,必须唯一,相当于servlet中的url
class - Action类的全路径
-->
<action name="login" class="action.LoginAction">
<!-- execute方法执行之后的返回值判定 -->
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
2. 1、创建相关页面
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>LOGIN</title>
</head>
<body>
<center>
<form action="login">
<table>
<caption>登录页面</caption>
<tr>
<th>username:</th>
<td>
<input type="text" name="userName">
</td>
</tr>
<tr>
<th>password:</th>
<td>
<input type="text" name="passWord">
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="登录">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
this is success.jsp.
</body>
</html>
error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
this is error.jsp.
</body>
</html>
2.2、创建Action类,并重写execute方法
LoginAction.java
package action;
//类似于Servlet
public class LoginAction {
private String userName;
private String passWord;
//必须重写execute方法
public String execute() {
System.out.println("username="+userName+";password="+passWord);
if("root".equals(userName) && "123456".equals(passWord)){
return "success";//返回参数匹配配置文件中相应的页面
}
else return "error";
}
//需要写get/set方法 值的获取依靠set方法
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;
}
}
2.3、在struts.xml配置文件中,添加action类的配置
<!-- 配置Action类
name - 在一个package中,必须唯一,相当于servlet中的url
class - Action类的全路径
-->
<action name="login" class="action.LoginAction">
<!-- execute方法执行之后的返回值判定 -->
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>