Struts2基本配置和使用
1.首先在web.xml里面配置一个Struts2的核心过滤器 这样Struts2才能开始工作
<!-- 配置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>
2.在工程的src目录下建一个struts.xml 为Struts2的核心配置文件
<?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>
<!--配置struts2包 (struts2中所有的action都放置在包内) -->
<package name="名字任意 不重复就行" extends="struts-default" namespace="/">
<!--配置action * 号代表通配符 {1}代表第一个通配符的值 当值和action类中的方法名相同 就会执行对应的方法 -->
<action name=" 一般取action类的简短类名_* " class="action类的完整类名" method="{1}">
<!-- 比如登录页面 我要请求UserAction中的登录方法 请求地址可以这样写 User_Login.action 这样struts2会找到对应的action类并执行对应方法 -->
<!--配置结果 当action类中的方法返回值和name的值相同的时候 会执行这个<result> 跳转到对应页面 默认是服务器转发跳转 可以通过设置 type的值 常用取值如下
默认是dispatcher 转发到某个页面
redirect 重定向到某个页面
chain 转发到某个action
redirectAction 重定向到某个 action
-->
<result name="和action类中方法的返回值一致" >页面路径 , 如果是跳转到别的action 就是请求别的action的请求路径</result>
</action>
</package>
</struts>
3.action类的写法
定义一个类继承ActionSupport类 然后就可以写方法,方法的返回值必须是String 如果这个方法处理完成不跳转页面 可以 return NONE;
这是ActionSupport类的一个常量 代表不跳转页面
struts2可以帮我们接收从页面传递过来的参数 并且封装成对应的对象,前提是参数名必须和对象的属性名一致 一般采用模型驱动的方法封装
action类继承一个ModelDriven<要封装对象的类>接口 重写getModel()方法 然后定义一个属性 就是对象的实例 然后在getModel()方法中返回 这个实例
struts2就会自动帮我们将页面传递的值 封装到这个对象 在这个类中就可以使用这个对象 进行操作 栗子 如下:
public class UserAction extends ActionSupport implements ModelDriven<User> { private User user=new User();
@Override public User getModel() { // TODO Auto-generated method stub return user; }
在struts2中如果想使用request和respon或者session之类的对象 可以通过 ServletActionContext类的静态方法getRequest()方法获得request对象
通过getResponse()方法 可以得到respon对象 可以进行一些存取值的操作
这是一个简单的登录方法 返回值可以在Struts2的核心配置文件中的action下配置result标签 name值和这个方法的返回值相同就可以跳转页面了
如果这个方法不需要跳转页面 直接 return NONE; 这是ActionSupport类的常量 代表不跳转页面
public String login(){ User u = userService.userLogin(user); if(u==null){ ServletActionContext.getRequest().getSession().setAttribute("messg", "登录失败,用户名或密码错误!"); return "loginFail"; }else{ ServletActionContext.getRequest().getSession().setAttribute("user", u); return "loginSuccess"; } }
这些就是struts2的基本使用 当然还有ongl表达式,值栈存取值和配置拦截器 这些功能 我就没写了,因为struts2这个框架过时了 而且还被爆出有安全漏洞
现在已经有更加完美的解决方案 就是SpringMVC