关于Struts2框架的学习(三)
来源:互联网 发布:冠林数据系统 编辑:程序博客网 时间:2024/05/19 18:43
一、关于strtus2的配置
<?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> <!--常量配置constant--> <!--乱码解决--> <constant name="struts.i18n.encoding" value="UTF-8"/> <!--设置自定义扩展名--> <constant name="struts.action.extension" value="action,,"/> <!--设置开发模式--> <constant name="struts.devMode" value="true"/> <!--自动装载--> <constant name="struts.configuration.xml.reload" value="true"/> <!-- 第二种方式配置常量,在src下新建一个strtus.properties的配置文件也可以; --> <!--团队开发的常量设置,通过include添加不同人员的配置文件--> <include file="config/strtus/user.xml"/> <!-- name:名称自定义,可以配置多个包 extends必须写,直接或间接继承struts-default name自定义 namespace:命名空间,不同模块可以指定不同的空间 --> <package name="hello" namespace="/" extends="struts-default"> <!--配置默认的action,当所请求的action不存在时,执行默认的action--> <default-action-ref name="default"/> <!--配置默认执行的class--> <default-class-ref class="com.yaoyao.LoginAction"/> <!--配置全局结果集,位置在action的前面--> <global-results> <result name="login">/login.jsp</result> </global-results> <!-- name请求名称,不要写 /,也不用加后缀; class对应action完全限定名,要求包名+类名,并且该类是有公共的无餐构造方法的,在action的配置中,如果不去 配置class,将会由默认的action来执行,默认的action类是ActionSupport类 method:配置处理类的请求处理方法,默认为execute;方法要满足公共的,返回值类型是String,无参数 method和name无关, --> <action name="hello" class="com.yaoyao.HelloAction" method="execute"> <!-- 结果集 name和对应action的方法的返回值匹配,默认是success type:结果的处理类型,默认是dispather转发 type有哪些: <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/> <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/> <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/> <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/> <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/> <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/> <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/> <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" /> <result-type name="postback" class="org.apache.struts2.dispatcher.PostbackResult" /> chain:指的是action链,链接下一个action,执行actionA以后直接执行actionB后直接执行actionC,用的比较少,地址栏是执行的第一个action dispather:指的是转发,特点和servlet一致,如果request中有数据到视图显示,使用dispather redirect:重定向,如果是重定向到jsp页面,可以直接重定向,如果是重定向到另一个action,需注意是否配置的了action的后缀名,如果要求有后缀名,
那么重定向 的action一定要加上后缀名称 redirectAction:重定向到另一个action,不用加后缀的后缀名,会将前一个action的后缀名自动加上。 stream:以流的形式显示-文件下载 --> <result>/index.jsp</result> </action> <action name="default"> <result>/login.jsp</result> </action> </package> </struts>二、Action的三种实现方式
1.定义一个pojo类:自定义一个普通的java类即可,不具有侵入性
2.实现Action接口,可以使我们的代码更加规范。
3.继承ActionSupport类,可以继承一些ActionSupport实现的功能,如验证,官方推荐使用此种方式。
三、以对象的方式处理表单数据
1.属性驱动
jsp页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>注册页面</title></head><body> <form action="register.action" method="post"> 用户名:<input type="text" name="user.name"><br> 密码:<input type="password" name="user.pwd"><br> 年龄:<input type="text" name="user.age"><br> 邮箱:<input type="email" name="user.email"><br> <input type="submit" value="注册"> </form></body></html>action代码:
package com.yaoyao.action;import com.opensymphony.xwork2.Action;import com.yaoyao.entity.User;public class UserAction { private User user; //注册 public String register(){ System.out.print(user.toString()); return Action.SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; }}strtus.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> <package name="default" namespace="/" extends="struts-default"> <action name="register" class="com.yaoyao.action.UserAction" method="register"> <result name="success">/show.jsp</result> </action> </package></struts>User.java
package com.yaoyao.entity;public class User { private String name; private String pwd; private int age; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", pwd='" + pwd + '\'' + ", age=" + age + ", email='" + email + '\'' + '}'; }}重点就是jsp页面的name属性赋值方法。
2.模型驱动(ModelDriven)
jsp页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>注册页面</title></head><body> <form action="regModel.action" method="post"> 用户名:<input type="text" name="name"><br> 密码:<input type="password" name="pwd"><br> 年龄:<input type="text" name="age"><br> 邮箱:<input type="email" name="email"><br> <input type="submit" value="注册"> </form></body></html>action类:
package com.yaoyao.action;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ModelDriven;import com.yaoyao.entity.User;public class UserModelAction implements ModelDriven<User> { private User user = new User(); public String register(){ System.out.print(user.toString()); return Action.SUCCESS; } public User getModel() { return user; }}
属性驱动和模型驱动都可以,通常来说,如果属性较多,可以使用模型驱动。
0 0
- 关于Struts2框架的学习(三)
- 关于Struts2框架的学习(一)
- 关于Struts2框架的学习(二)
- 关于Struts2框架的学习(四)
- 关于struts2框架学习
- Struts2框架学习(三) 数据处理
- Struts2框架学习(三) 数据处理
- Struts2框架学习(三) 数据处理
- Struts2框架学习(三) 数据处理
- Struts2框架学习(三) 数据处理
- Struts2框架学习(三) 数据处理
- Struts2框架学习(三) 数据处理
- 三大框架学习之----struts2框架的搭建(一)
- Struts2框架(三)
- Struts2框架的基本使用(三)
- 关于三大框架的学习
- 学习三大框架Struts2 、 Hibernate 、 Spring时,涉及到三大框架的配置文件以及整合。
- 三大框架学习之----struts2 通配符的使用(二)
- 不能连接tomcat服务器
- Elasticsearch信息收集
- 你真的了解PHP吗?
- 机器学习算法总结
- JS中的call()和apply()方法
- 关于Struts2框架的学习(三)
- AppCompatActivity去掉标题栏(ActionBar)
- Caffe 深度学习入门教程 Blob,Layer and Net以及对应配置文件的编写
- Mybatis拦截器,分页
- 简单方法:让你理解什么是依赖注入Dagger2(Dependency Injection简称DI)
- Android 代码改变图标颜色及动态生成Drawerable Selector
- 分布式与集群的区别
- linux的mysql数据库的由于权限问题看不到mysql库user表
- angular2 学习demo