struts配置通配符*来匹配方法,实现动态调用
01:web.xml中配置,启动struts2
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 01:启动struts2框架 --> <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>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
02:编写action类
package com.self.action; /** * 02:写相应的处理方法 */ public class HelloWorldAction { private String message; public String helloworld_1(){ this.message="helloworld_1"; return "helloworld_1"; } public String helloworld_2(){ this.message="helloworld_2"; return "helloworld_2"; } //为属性注入值,需要提供set方法 public void setMessage(String message) { this.message = message; } //在页面显示值,需要get方法 public String getMessage() { return message; } }
03:配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 01:将.action访问,改为.do和.action --> <constant name="struts.action.extension" value="do,action" /> <!-- 02:指定默认编码,相当于HttpServletRequest的setCharacterEncoding方法,也作用于freemarker、velocity的输出 --> <constant name="struts.i18n.encoding" value="UTF-8" /> <include file="department.xml"/> </struts>
04:编写引入的department.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="dep" namespace="/department" extends="struts-default"> <!-- 用通配符*来指代方法名,{1}代表第一个通配符所代表的字段:这里代表方法 --> <action name="helloworld_*" class="com.self.action.HelloWorldAction" method="{1}" > <result name="helloworld_1"> /helloworld_1.jsp </result> <result name="helloworld_2"> /helloworld_2.jsp </result> </action> </package> </struts>
05:编写界面1
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>显示</title> </head> <!-- 第4步:显示 --> <body> <BR> <BR> <center> 将页面放在WEB-INF下面,这样用户直接访问不到<BR> <BR> 为action的属性注入值: ${message} <BR> </center> </body> </html>
06:编写界面2
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>显示</title> </head> <!-- 第4步:显示 --> <body> <BR> <BR> <center> 将页面放在WEB-INF下面,这样用户直接访问不到<BR> <BR> 为action的属性注入值: ${message} <BR> </center> </body> </html>
07:访问路径1、2
http://localhost:8080/Struts2_01/department/helloworld_helloworld_1.action
http://localhost:8080/Struts2_01/department/helloworld_helloworld_2.action