S4.6_Struts2_Annotation action动作类使用annotation注解的配置方式

来源:互联网 发布:淘宝联盟一直不提现 编辑:程序博客网 时间:2024/06/05 19:01

我们接下来将要创建的项目目录结构如下:


由项目S2.1_Struts2_ByMyEclipse (如何下载它:点击打开链接)复制生成一个新的项目S4.6_Struts2_Annotation

第1步:在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>

第2步:在WebRoot/WEB-INF/web.xml文件中配置struts的action扫描路径

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <!-- 这里配置struts的action扫描路径 -->
    <init-param>
       <param-name>actionPackages</param-name>
       <param-value>net.nw.action</param-value>
    </init-param>
    <init-param>
       <param-name>encoding</param-name>
       <param-value>UTF-8</param-value>
    </init-param>

  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

struts2 annotation所建action命名规则:去掉类名的Action部分。然后将每个分部的首字母转为小写,用减号“-”分割驼峰英文单词。
a) 举例:TestAction,那么访问的时候就是test.action,或者test.do或者test(这个根据你的
后缀配置来定);
b) 举例:StudentListAction,那么访问的时候就是student-list.action或者同上。
注意:比如像StudentListAction类,如果你在地址栏输入StudentList是访问不到的,必须输入student-list

第3步:添加注解到LoginAction类上面

package net.nw.action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import net.nw.dao.UserDao;
import net.nw.vo.User;

@ParentPackage(value="struts-default")
@Namespace(value="/")
//@Result(name="success",location="/login_success.jsp")
@Results({
  @Result(name="login_success",location="/login_success.jsp",type="redirect"),
  @Result(name="login_failure",location="/login_failure.jsp",type="redirect")
})

public class LoginAction {
private String username;//必须与html标签中的名称一样,此处私有变量的值直接来自html标签对应名称填充过来的值
private String password;//必须与html标签中的名称一样,此处私有变量的值直接来自html标签对应名称填充过来的值
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;
}
//调用业务层操作类的方法
public String execute(){
User u = new User();
u.setUsername(this.getUsername());
u.setPassword(this.getPassword());
UserDao dao = new UserDao();
if(dao.userLogin(u)){
return "login_success";
} else{
return "login_failure";
}
}
}

第4步:发布运行程序,效果图如下:

http://localhost:8080/S4.6_Struts2_Annotation/login.jsp


本项目的下载地址:点击打开链接

0 0
原创粉丝点击