最近在学习SSH框架,之前Javaweb学的不扎实。所以做好笔记,方便以后的学习。
1. Struts2常量的配置
Struts2常量的配置通常采用3种方式,分别如下:
- 在struts.xml文件中使用< constant >元素配置常量(最常用的方式);
name:该属性指定了常量的常量名。
value:该属性指定了常量的常量值。
代码示例如下:
<struts>
<!--设置默认编码集为UTF-8-->
<constant name="struts.il8n.encoding" value="UTF-8"/>
<!--设置使用开发模式-->
<constant name="struts.devMode" value="true"/>
</struts>
- 在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路径下
- 在web.xml文件中通过初始化参数配置常量 ;
在web.xml文件中配置核心过滤器StrutsPrepareAndExecuteFilter时,通过初始化参数来配置常量。通过< filter >元素的< init-param >子元素指定,每个< init-param >元素配置了一个Struts2常量,如下列代码所示:
<filter>
<!--指定Struts2的核心过滤器-->
<filter-name>struts2<filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<!--通过init-parm元素配置Struts2常量,配置默认编码集为UTF_8-->
<init-param>
<param-name>struts.il8n.encoding</param-name>
<param-name>UTF-8</param-name>
</init-param>
</filter>
2.1 实现Action控制类
Action作为框架的核心类,实现对用户请求的处理,被称为业务逻辑控制器。实现Action控制类共有3种方式:
- POJO的实现
ActionPOJO全程是Palin Ordinary Java Object (简单的java对象),只要具有一部分getter/setter方法的类就可以称作POJO。一般在这个POJO类中,要有一个公共的无参的构造方法和一个execute()方法(此方法时Action类的默认请求处理方法,定义如下)
public String execute() throws Exception{
return "success";
}
execute()方法的要求如下:
方法的权限修饰符为public。
返回一个字符串,就是指示的下一个页面的Result。
方法没有参数。
-
实现Action接口
-
继承ActionSupport类
扫描二维码关注公众号,回复: 5598028 查看本文章
2.2 配置Action与通配符的使用(见下述例子)
下面将通过一个小例子向大家完整的讲解上述所有的方法
目录:
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
<?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>
<!--
配置常量:constant 参考 default.properties
-->
<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.jsp</result>
<result name="fail">/fail.jsp</result>
</action>
<!--
action的配置:
name:必须选项 ,跟请求的url相匹配
class:类的全名称(用于反射时创建实例的)
method:可选,默认:execute
~/day03081/login1.action
day03011.LoginAction1 login1 = new day03011.LoginAction1()
-->
<action name="login1" class="day03011.LoginAction1" >
<result name="success">/success.jsp</result>
</action>
<!--
~/day03081/loginx.action
day03011.LoginAction1 loginx = new day03011.LoginAction1()
-->
<action name="loginx" class="day03011.LoginAction1"
method="loginx">
<result name="success">/success.jsp</result>
</action>
<action name="login2" class="day03011.LoginAction2"
method="login">
<result name="success">/success.jsp</result>
<result name="error">/fail.jsp</result>
</action>
<!--
*:通配符
~/user_login 时,*就代表login
{1}:表达式中第一个通配符 ,login
需要在action当中添加子元素allowed-methods,
值为方法名,多个方法之间用逗号隔开.
在匹配时,会找一个完全匹配的,如果没有,则查找匹配程度最高。
name="user_login"
name="user_*"
name="*_*"
-->
<action name="user_*" class="day03011.LoginAction4"
method="{1}">
<result name="success">/success.jsp</result>
<allowed-methods>check,login,regrist</allowed-methods>
</action>
</package>
</struts>
首页和成功页自己随便做一个就好了,我的就是一个输入框然后提交。若有任何疑问或是不解,请在下方评论留言,谢谢。