Struts2的核心配置之Struts2的常量配置与Action的配置

    最近在学习SSH框架,之前Javaweb学的不扎实。所以做好笔记,方便以后的学习。

1. Struts2常量的配置

    Struts2常量的配置通常采用3种方式,分别如下:

  1. 在struts.xml文件中使用< constant >元素配置常量(最常用的方式);

name:该属性指定了常量的常量名。
value:该属性指定了常量的常量值。
代码示例如下:

<struts>
	
	<constant name="struts.il8n.encoding" value="UTF-8"/>
	
	<constant name="struts.devMode" value="true"/>
struts>
  1. 在struts.properties文件中配置常量 ;

    其格式是 key-value 对,及每个key对应一个value,key表示的是Struts2框架中的常量,而value则是其常量值。具体方式如下:

###设置默认编码集为UTF-8
struts.il8n.encoding=UTF-8
##设置action请求的扩展名为action或者没有扩展名
struts.action.extension=action,
###设置不使用开发模式
struts.devMode=false
###色红孩子不开启动态方法调用
struts.enable.DynamicMethodInvocation=false

    和struts.xml文件一样,此文件也应存放于WEB-INF/classes路径下

  1. 在web.xml文件中通过初始化参数配置常量 ;

    在web.xml文件中配置核心过滤器StrutsPrepareAndExecuteFilter时,通过初始化参数来配置常量。通过< filter >元素的< init-param >子元素指定,每个< init-param >元素配置了一个Struts2常量,如下列代码所示:

<filter>
	
	<filter-name>struts2<filter-name>
	<filter-class>
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
	filter-class>
	
	<init-param>
		<param-name>struts.il8n.encodingparam-name>
		<param-name>UTF-8param-name>
	init-param>
filter>

2.1 实现Action控制类

    Action作为框架的核心类,实现对用户请求的处理,被称为业务逻辑控制器。实现Action控制类共有3种方式:

  1. POJO的实现

    ActionPOJO全程是Palin Ordinary Java Object (简单的java对象),只要具有一部分getter/setter方法的类就可以称作POJO。一般在这个POJO类中,要有一个公共的无参的构造方法和一个execute()方法(此方法时Action类的默认请求处理方法,定义如下)

public String execute() throws Exception{
	return "success";
}

execute()方法的要求如下:
            方法的权限修饰符为public。
            返回一个字符串,就是指示的下一个页面的Result。
            方法没有参数。

  1. 实现Action接口

  2. 继承ActionSupport类


2.2 配置Action与通配符的使用(见下述例子)

    下面将通过一个小例子向大家完整的讲解上述所有的方法
目录:
Struts2的核心配置之Struts2的常量配置与Action的配置_第1张图片
LoginAction.java

package day03011;

public class LoginAction {
	
	public String execute(){
		System.out.println("LoginAction.....execute");
		return "success";
	}
}

LoginAction1.java

package day03011;

import com.opensymphony.xwork2.Action;

public class LoginAction1 implements Action {

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return SUCCESS;
	}
	
	public String loginx() throws Exception {
		return SUCCESS;
	}

}

LoginAction2.java

package day03011;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction2 extends ActionSupport {
	
	/**
	 * 在action当中定义属性,
	 * 属性名和请求当中参数名一致
	 * 属性要有标准的Getter/Setter  
	 * 
	 * username==》setUsername
	 * userName==》setUserName
	 */
	private String userName;
	private String password;
	
	public String login(){
		if (userName==null || "".equals(userName)) {
			return ERROR;
		} 
		return SUCCESS;
	}
	
	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;
	}

}

LoginAction4.java

package day03011;
public class LoginAction4 {
	public String check(){
		return "success";
	}
	public String regrist(){
		return "success";
	}
	public String login(){
		return "success";
	}
}

最后是配置文件struts.xml



<struts>
	
	<constant name="struts.devMode" value="true">constant>
	<package name="a1" namespace="/" 
			extends="struts-default">
			
		<action name="login" class="day03011.LoginAction" 
			method="execute">
			
			<result name="success">/success.jspresult>
			<result name="fail">/fail.jspresult>
		action>
		
		 
		<action name="login1" class="day03011.LoginAction1"	>
			<result name="success">/success.jspresult>
		action>
		
		<action name="loginx" class="day03011.LoginAction1"
			method="loginx">
			<result name="success">/success.jspresult>
		action>
		<action name="login2" class="day03011.LoginAction2"
			method="login">
			<result name="success">/success.jspresult>
			<result name="error">/fail.jspresult>
		action>
		
		
		<action name="user_*" class="day03011.LoginAction4" 
			method="{1}">
			<result name="success">/success.jspresult>
			<allowed-methods>check,login,regristallowed-methods>
		action>
	package>
struts>

    首页和成功页自己随便做一个就好了,我的就是一个输入框然后提交。若有任何疑问或是不解,请在下方评论留言,谢谢。

你可能感兴趣的:(SSH框架学习)