struts2+hibernate学习笔记
来源:互联网 发布:三毛梦里花落知多少txt 编辑:程序博客网 时间:2024/04/30 10:36
struts概述
- POJO 表单和 POJO 动作
- 标签支持
- AJAX
MVC架构
- Model - 模式的最低层,负责维护数据
- Controller - 控制模型和视图之间的交互的软件代码
- View - 负责显示全部或部分的数据给用户
体系结构
- 动作
- 拦截器
- 值栈/OGNL
- 结果/结果类型
- 视图技术
控制器是由 Struts 2 调度 servlet 过滤器和拦截器实现的,模型是由动作实现的,视图是由结果类型和结果结合而成的。值栈和 OGNL 提供共同主线,连接和集成其他组件。
实例
当你在 Struts 2 web 应用程序中点击一个超链接或者提交一个 HTML 表单时,控制器会收集输入并且发送到一个称作 Actions 的 Java 类。当 Action 执行后,结果选择一个资源来显现响应。资源通常是一个 JSP,但是它也可以是一个 PDF 文件,Excel 电子表格或者 Java applet 窗口。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <constant name="struts.devMode" value="true" /> <package name="helloworld" extends="struts-default"> <action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" method="execute"> <result name="success">/HelloWorld.jsp</result> </action> <-- more actions can be listed here --> </package> <-- more packages can be listed here --></struts>
- 置常量 struts.devMode 为 true,是因为我们正工作在程序开发环境中,我们需要看到一些有用的日志信息。
- name (required) 包的唯一标识符。
动作
动作是 Struts 2 框架的核心,因为它们是服务于任何 MVC(模型-视图-控制器)的框架。每个 URL 被映射到一个指定的动作中,它提供了必要的处理逻辑来服务用户的请求。
package com.tutorialspoint.Struts 2;import com.opensymphony.xwork2.ActionSupport;public class HelloWorldAction extends ActionSupport{ private String name; public String execute() throws Exception { if ("SECRET".equals(name)) { return SUCCESS; }else{ return ERROR; } } public String getName() { return name; } public void setName(String name) { this.name = name; }}
拦截器
Struts 2 框架提供的许多功能都是使用拦截实现的;例如包括异常处理,文件上传,生命周期回调和验证等
- alias 允许参数有不同的跨请求的别名
- validation 为动作提供了验证支持。
创建一个拦截器
public class MyInterceptor extends AbstractInterceptor { public String intercept(ActionInvocation invocation)throws Exception{ /* let us do some pre-processing */ String output = "Pre-Processing"; System.out.println(output); /* let us call action or next interceptor */ String result = invocation.invoke(); /* let us do some post-processing */ output = "Post-Processing"; System.out.println(output); return result; }}
<action name="hello" class="com.tutorialspoint.Struts 2.HelloWorldAction" method="execute"> <interceptor-ref name="params"/> <interceptor-ref name="myinterceptor" /> <result name="success">/HelloWorld.jsp</result> </action>
应该注意的是,你可以在 标签内注册多个拦截器,并且同时你可以在 标签内调用多个拦截器。你可以用不同的动作调用相同的拦截器。
值栈/OGNL
OGNL 与 JSP 表达式语言非常类似。OGNL 是以在上下文中有跟对象或默认对象的概念为基础的。默认对象或根对象的属性可以使用的标记符号英镑来引用。
application - 应用范围的变量session - 会话范围的变量root / value stack - 所有的动作变量都保存在这里request - 请求范围的变量parameters - 请求参数attributes – 在页面,请求,会话和应用范围内存储属性
文件上传
Struts 2 框架为处理文件上传提供了内置支持,它使用“在 HTML 中基于表单的文件上传”。当上传一个文件时,它通常会被存储在一个临时目录中,而且它们应该由 Action 类进行处理或移动到一个永久的目录,用来确保数据不丢失。
过预定义的名为文件上传的拦截器,Struts 的文件上传是可能的,这个拦截器在 org.apache.struts2.interceptor.FileUploadInterceptor 类是可用的,而且是 defaultStack 的一部分。你仍然可以使用在 struts.xml 中设置各种参数,我们将在下面看到。
验证
称为 validate()。确保你的动作类扩展了 ActionSupport 类,否则你的 validate 方法将不会被执行。此处必须添加“input”,否则系统会崩溃
<action name="empinfo" class="com.tutorialspoint.struts2.Employee" method="execute"> <result name="input">/index.jsp</result> <result name="success">/success.jsp</result> </action>
控制标签
- if 和 else 标签
<s:if test="%{false}"> <div>Will Not Be Executed</div></s:if><s:elseif test="%{true}"> <div>Will Be Executed</div></s:elseif><s:else> <div>Will Not Be Executed</div></s:else>
- 迭代标签
<s:iterator value="days"> <p>day is: <s:property/></p></s:iterator>
<result name="input">/users/Users_login.jsp</result>
<!-- 遍历开始 --> <s:iterator value="#session.students_list" var="stu"> <tr class="list"> <td><s:property value="#stu.sid"/></td> <td><a href="<%=path%>/students/Students_modify.action?sid=<s:property value="#stu.sid"/>"><s:property value="#stu.sname"/></a></td> <td><s:property value="#stu.gender"/></td> <td><s:date name="#stu.birthday" format="yyyy年MM月dd日"/></td> <td><s:property value="#stu.address"/></td> <td><a href="<%=path%>/students/Students_delete.action?sid=<s:property value="#stu.sid"/>" onclick="javascript: return confirm('真的要删除吗?');">删除</a></td> </tr> </s:iterator>
<action name ="*_*" class ="com.action.{1}Action" method="{2}"> <result name="query_success">/students/Students_query_success.jsp</result> <result name="delete_success" type="chain">Students_query</result></action>
tx.commit();
- hibernate,struts2学习笔记
- struts2+hibernate学习笔记
- struts2+hibernate+srping学习笔记
- spring+struts2+hibernate的学习笔记
- struts2学习笔记 -- day03 struts2整合hibernate环境搭建
- SSH整合学习笔记之struts2+spring+hibernate+c3p0
- 《Spring学习笔记》:Spring、Hibernate、struts2的整合前奏
- Struts2 + Hibernate开发笔记(一)
- Struts2 + Hibernate开发笔记(二)
- Struts2 + Hibernate开发笔记(一)
- 关于Struts2.hibernate,spring(笔记)
- struts2学习笔记--struts2配置
- Struts2学习笔记--安装struts2
- struts2.01学习笔记
- struts2学习笔记
- Struts2学习笔记1
- struts2.0 学习笔记
- struts2.01学习笔记!
- 触摸屏驱动之概念介绍
- Android——蓝牙利用RSSI进行距离测算
- 299. Bulls and Cows
- 数字三角形
- JSP中用Ajax
- struts2+hibernate学习笔记
- 遍历列表,找出具体元素的索引
- 004使用一个栈对另一个栈完成排序(C++实现)
- Codeforces VK Cup 2015
- ListView及其ArrayAdapter的应用
- 量化投资-基本面模型-PVC多因素模型
- Linux 守护进程Daemon
- ES6之Object--构造函数与类静态方法
- POJ