Struts2 ModelDriven接口使用
用户在做http请求时一般都有两种方式:get和post方式.get方式用来获取查询相关信息,既向服务器获得信息,而post方式用来更新信息既向服务器提交数据.通常情况下,用get方式向服务器获取信息是附带的信息量都比较少,可以用servlet API来一个一个获取,但是当post方式提交数据时,往往数据量都比较大,如果用servlet API方式获取数据代码过于臃肿,维护和修改比较复杂降低了程序员工作效率.strtus2框架提供了ModelDrvem接口,对于实现接口Action来说只需定义Model,struts2框架就会自动将用户提交的http信息赋给相应的model.
以下已实例的方式说明,项目包括:action类LoginAction.java,model类PersonModel.java,struts.xml,web.xml文件,index.jsp,success.jsp文件.
1. 建立WEB工程 Struts2ModelDrivenDemo,添加相关的动态库和开发包,请参照前面介绍
2. 总体项目结构图如下:
3. 项目的代码介绍
Action类 LoginAction代码如下:
- package com.northeasttycoon.action;
- import com.northeasttycoon.model.PersonModel;
- import com.opensymphony.xwork2.ActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- import com.opensymphony.xwork2.ModelDriven;
- /**
- @author NorthEastTycoon
- */
- public class LoginAction extends ActionSupport implements ModelDriven<PersonModel>{
- private static final long serialVersionUID = 1L;
- private PersonModel _personModel = new PersonModel();
- @Override
- public PersonModel getModel() {
- return _personModel;
- }
- public String execute() throws Exception{
- ActionContext _context = ActionContext.getContext();
- _context.put("person", _personModel);
- return SUCCESS;
- }
- }
model类PersonModel.java
- package com.northeasttycoon.model;
- /**
- @author NorthEastTycoon
- */
- public class PersonModel {
- private String name; // 名字
- private String degree;// 等级
- private String age;//年龄
- private String company;//公司
- private String address;//地址
- private String telephone;//电话
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getDegree() {
- return degree;
- }
- public void setDegree(String degree) {
- this.degree = degree;
- }
- public String getAge() {
- return age;
- }
- public void setAge(String age) {
- this.age = age;
- }
- public String getCompany() {
- return company;
- }
- public void setCompany(String company) {
- this.company = company;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- public String getTelephone() {
- return telephone;
- }
- public void setTelephone(String telephone) {
- this.telephone = telephone;
- }
- }
struts.xml
- <?xml version="1.0" encoding="UTF-8"?><!-- northeasttycoon -->
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <package name="default" namespace="/" extends="struts-default">
- <action name="person" class="com.northeasttycoon.action.LoginAction">
- <result name="success">/success.jsp</result>
- </action>
- </package>
- </struts>
web.xml文件
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- northeasttycoon -->
- <web-app 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" id="WebApp_ID" version="3.0">
- <display-name>Struts 2</display-name>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.FilterDispatcher
- </filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- </web-app>
index.jsp
- <%@ page contentType="text/html; charset=UTF-8"%>
- <%@ taglib prefix="tycoon" uri="/struts-tags"%>
- <html>
- <head>
- <title>Hello World</title>
- </head>
- <body>
- <center>
- <tycoon:form action="person">
- <tycoon:textfield lable="name" name="name"/>
- <tycoon:textfield lable="degree" name="degree"/>
- <tycoon:textfield lable="age" name="age"/>
- <tycoon:textfield lable="company" name="company"/>
- <tycoon:textfield lable="address" name="address"/>
- <tycoon:textfield lable="telephone" name="telephone"/>
- <tycoon:submit/>
- </tycoon:form>
- </center>
- </body>
- </html>
success.jsp
- <%@ page contentType="text/html; charset=UTF-8"%>
- <%@ taglib prefix="tycoon" uri="/struts-tags"%>
- <html>
- <head>
- <title>Hello World</title>
- </head>
- <body>
- <center>
- <tycoon:property value="#person.name"/></br>
- <tycoon:property value="#person.degree"/></br>
- <tycoon:property value="#person.age"/></br>
- <tycoon:property value="#person.company"/></br>
- <tycoon:property value="#person.address"/></br>
- <tycoon:property value="#person.telephone"/></br>
- </center>
- </body>
- </html>
执行的结果截图:
1. 浏览器输入:http://localhost:8080/Struts2ModelDrivenDemo 显示如下图
2. 点击提交
显示如下:
以上为实例截图.
Struts2 ModelDriven接口使用的更多相关文章
- 接触Struts2的ModelDriven<>接口
最近在学SSH框架,实战项目,用到了Struts2的ModelDriven<>接口,在这做一点记录 ModelDriven,意为模型驱动,意思是直接把实体类当成页面数据的收集对象 参考他人 ...
- Struts2中的ModelDriven接口
若没有实现ModelDriven的接口,Controll的代码会比较冗余,不能实现Controll和Model代码的分离 下面是没有实现ModelDriven接口的SuggestAction pack ...
- struts2 ModelDriven 和 Preparable 拦截器
Struts2 运行流程图-1
- 1. Action 实现 ModelDriven 接口后的运行流程
1). 先会执行 ModelDrivenInterceptor 的 intercept 方法. public String intercept(ActionInvocation invocation) ...
- Struts2 - ModelDriven 拦截器、Preparable 拦截器
开篇:拦截器在Struts中的作用 在我们的web.xml中,我们配置了一个过滤器,实现将所有请求交付StrutsPrepareAndExecuteFilter类.一旦接受到任意action的请求,该 ...
- 关于继承modelDriven接口action的ajax来电参数
例如 Model类如下面,Teacher,public class Teacher{ private Integer id. priavte String name; private Sch ...
- BaseAction编写:免去一些重复的代码,比如继承ActionSupport和实现ModelDriven接口
1.BaseAction package com.learning.crm.base; import java.lang.reflect.ParameterizedType; import java. ...
- Struts2中的ModelDriven机制及其运用
所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2.actions; public cla ...
- Struts2 DomainModel、ModelDriven接收参数
一.DomainModel(域模型) 1. 应用场景:一般我们在struts2的action中接收参数通常是如下方式 package cn.orlion.user; import com.opensy ...
随机推荐
- java通过读取本地文件获取反射方法参数,执行对象方法
运用到的知识点 IO流, 集合properties 反射 在工程目录下新建file config.properties #one time only can run one method cl ...
- Java使用apache的开源数据处理框架commons-dbutils完成查询结果集的各种处理输出(8种方式)
package demo; /* * QueryRunner数据查询操作: * 调用QueryRunner类方法query(Connection con,String sql,ResultSetHan ...
- DOM-window下的常用子对象-location-刷新页面
1.刷新当前页面:(通过给location.href赋值的方式) window.location.href="" eg:window.location.href="htt ...
- 在C#用进程打开cmd与直接手动打开cmd是不一样的
网上找不着答案,想了一下觉得可能是不同的用户,用set看了一下环境变量果然是不同用户,要改一下 按以下方法改: http://www.cnblogs.com/babycool/p/3569183.ht ...
- 浅谈.Net异步编程的前世今生----EAP篇
前言 在上一篇博文中,我们提到了APM模型实现异步编程的模式,通过使用APM模型,可以简化.Net中编写异步程序的方式,但APM模型本身依然存在一些缺点,如无法得知操作进度,不能取消异步操作等. 针对 ...
- Mycat 做简单的读写分离(转载)
大漠小狼的个人空间 http://www.51testing.com/html/34/369434-3686088.html 使用Mycat 做简单的读写分离(一) 原本使用的是amoeba做的读 ...
- 10.1综合强化刷题 Day4
财富(treasure) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有n个小伙伴.每个小伙伴有一个身高hi. 这个游戏是这样的,LYK生活的环境是以 ...
- 关于<textarea>的内容中换行的表示方法
<textarea>sdfsdfsffsd fer</textarea>
- goreplay使用
最新版的发布公告:https://leonsbox.com/goreplay-v0-16-and-4th-anniversary-5408b1fd72e0 主要提到:中间件.报文解压.从kafka读取 ...
- 2017.2.12 开涛shiro教程-第七章-与Web集成
2017.2.9 开涛shiro教程-第七章-与Web集成(一) 原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. ...