Struts2配置介绍
1、web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--配置Struts2的前端控制器 struts2框架开始工作的入口 接管请求 --> <filter> <!--名称自定义--> <filter-name>struts2</filter-name> <!--Struts2提供的控制器类--> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
2、Struts2.xml(该配置文件的名称固定,不能修改。且只能放于src下)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <!--suppress ALL --> <struts> <!-- package分模块管理 name 可自定义但不能重复,在一个项目中唯一 namespace:命名空间,与url请求路径直接相关 如:/ 请求为/hello.action /user 请求为/user/hello.action extends: 继承 必须直接或者间接继承struts-default --> <package name="default" namespace="/" extends="struts-default"> <!--配置action 配置url和处理类的方法进行映射 name 为请求名称,不加后缀 class 处理类的完全限定名称 包名+类名(如果不配置,则由默认类来处理)com.opensymphony.xwork2.ActionSupport method 指定处理请求方法 默认为execute方法 --> <action name="hello" class="cn.ht.action.HelloAction"> <!-- result 结果集配置 name 结果集名称和处理方法的返回值,默认为success,可以自定义 Struts2提供5个返回结果: Action.SUCCESS 执行成功,跳转到下一个视图 Action.NONE 执行成功,不需要视图显示 Action.ERROR 执行失败,显示失败页面 Action.INPUT 要执行该Action 需要更多的输入条件 Action.LOGIN 需要登录后才能执行 type指定响应结果类型: dispatcher 转发 默认 redirect 重定向 --> <result name="success" type="redirect">hello.jsp</result> </action> </package> </struts>
3、Struts2案例:
- 新建项目
- 将lib移到WEB-INF目录下(手动导入必要且正确的jar包,否则会报Exception starting filter struts2)
- 配置 web.xml--配置 struts2 的核心过滤器
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <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>*.action</url-pattern> </filter-mapping> </web-app>
- 配置 struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <package name="default" namespace="/" extends="struts-default"> <!-- class 处理类的完全限定名称 包名+类名 --> <action name="login" class="cn.ht.action.LoginAction"> <result name="success">/success.jsp</result> <result name="failed">/login.jsp</result> </action> </package> </struts>
- 在web目录下创建login.jsp
注:action 的提交地址.action 是扩展名,默认为.action;action 的扩展名和 web.xml 中配
置的 struts2 的核心过滤器相匹配;也就是如果表单中提交的地址以.action 结尾,那么在配
置 filter 的 url-pattern 时一定是: <url-pattern>*.action</url-pattern>;
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2019-8-13 Time: 10:01 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>STRUTS2</title> </head> <body> <form action="login.action" method="post"> 用户名:<input type="text" name="name"/><br> 密码:<input type="password" name="pwd"/><br> <input type="submit" value=" 登录 "/> </form> </body> </html>
- 在src下创建LoginAction 类 (注:LoginAction 中的属性名和表单中表单元素的名称要一致)
package cn.ht.action; /** * @Classname LoginAction * @Description TODO * @Date 2019-8-13 10:04 * @Created by Administrator */ public class LoginAction { private String name; private String pwd; //处理方法 public String execute(){ if("zhang".equals(name)&&"1234".equals(pwd)){ return "success"; }else{ return "failed"; } } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
- 创建success.jsp
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2019-8-13 Time: 12:07 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>登录成功!!!</h1> </body> </html>
- 访问测试:
- 输入信息-登录
整体目录结构如下: