Struts2大致原理:
页面---动作---struts.xml---动作处理类---跳转页面;
表单,Action,配置文件;
实体类传递页面数据;(ognl)
Validate()简单验证;
动作处理类,结果,跳转页面;
Struts2的其它配置文件中:
<package name="loginOpra" namespace="/WebsiteBackstage" extends="struts-default">
Namespace struts2命名空间,默认为当前空间
最好用模块命名,
http://localhost:8080/sshWeb/WebsiteBackstage/login.jsp
命名为/WebsiteBackstage;
Action实现类:
使用继承ActionSupport的写法;
Action的动态调用方法
Action执行的时候并不一定要执行execute方法,我们可以指定Action执行哪个方法:
通过methed属性指定执行方法:
可以在配置文件中配置Action的时候用method=来指定执行哪个方法
<action name="userAdd" class="com.bjsxt.struts2.user.action.UserAction" method="add">
<result>/user_add_success.jsp</result>
</action>
这样,只要在action的对象中有一个add的方法,并且返回类型为String就可以了。如果没有method属性,则默认执行execute()方法。
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
public String add() {
return SUCCESS;
}
}
登录验证提示:
动作实现类方法中:
this.addFieldError("userError", "用户名或密码错误,请检查!");
<s:fielderror fieldName="userError" theme="simple"/>
<s:fielderror>标签:获取使用addFieldError()方法添加的信息。
FiledName:指定信息的名称。
Theme: 指定显示的主题。
注:使用此标签获取的错误信息,Struts强制添加了css的修饰。生成的HTML代码如下(不长用):
<ul class="errorMessage">
<li><span>name is error</span></li>
<li><span>name is too long</span></li>
</ul>
Class=”errorMessage”是Struts2已经设置好的一个css了。这个方式不方便我们自定义样式。
另,非空的验证:
两种方式,上面的一种,validate的一种,
非空,错误验证,都要搭配action配置文件中的
<result name="input">/WebsiteBackstage/login.jsp</result>;
列表页面数据绑定;
类:
List<Admin> list = adminDao.getAll();
ActionContext.getContext().put("admins", list);
页面:
<s:iterator value="admins" status="itStatus">
<li>
<s:property value="#itStatus.count" />
<s:property value="name"/>
<s:property value="pwd"/>
</li>
</s:iterator>
重定向错误:---1个action有重定向错误,分成两个就好了。
<action name="admin_*" class="service.AdminService" method="{1}">
<result name="success" type="redirect">admin_list2.action</result>
<result name="update" >/WebsiteBackstage/sysMana/admin_update.jsp</result>
<result name="input">/WebsiteBackstage/sysMana/admin_add.jsp</result>
</action>
<action name="admin_list2" class="service.AdminService" method="list">
<result name="success">/WebsiteBackstage/sysMana/admin_list.jsp</result>
</action>
动作带id的简单写法:
<a href="admin_delete?id=<s:property value='id'/>">删除</a>
复杂的:
<s:url action="admin_delete" id="myUrl">
<s:param name="id" value="id"/>
</s:url>
<a href='<s:property value="#myUrl" />'>删除</a>
页面路径:
使用绝对路径;
<%
String path = request.getContextPath(); //项目文件名;
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; //http路径;
%>
---获取到http://localhost:8080/sshWeb/到这里的路径;
页面使用方式两种:
1),<a href="<%=basePath%>WebsiteBackstage/sysMana/admin_add.jsp">添加管理员</a> ---单个超链中补全使用。
2),在head中加<base href="<%=basePath%>"> ,所有超链默认加载前缀;
<s:date format="yyyy-MM-dd" name="date" />
全选删除:
页面checkbox:
<s:form id="adminForm" action="admin_deleteMore" method="post" enctype="multipart/form-data">
全选:<input type="checkbox" name="allselect" id="allselect" onclick="check()"/>
<input type="submit" name="submit" value="批量删除" onclick="return confirm('确定删除该?')?true:false;" />
<s:iterator value="admins" status="itStatus">
<li>
<s:property value="#itStatus.count" />
<s:property value="name"/>
<s:property value="pwd"/>
<s:url action="admin_goUpdate" id="myUrl">
<s:param name="id" value="id"/>
</s:url>
<a href='<s:property value="#myUrl" />'>修改 </a>
<a href="admin_delete?id=<s:property value='id'/>" onclick="return confirm('确定删除?');">删除</a>
<input type="checkbox" name="chkbox" id="chkbox" value='<s:property value="id"/>' />
</li>
</s:iterator>
</s:form>
Js全选:
<script type="text/javascript">
function check() {
var confirmBox = document.getElementById("allselect");//
if (confirmBox.checked) {
var arryObj = document.getElementsByName("chkbox");
for ( var i = 0; i < arryObj.length; i++) {
if (typeof arryObj[i].type != "undefined"
&& arryObj[i].type == 'checkbox')
arryObj[i].checked = true;
}
} else {
var arryObj = document.getElementsByName("chkbox")
for ( var i = 0; i < arryObj.length; i++) {
if (typeof arryObj[i].type != "undefined"
&& arryObj[i].type == 'checkbox')
arryObj[i].checked = false;
}
}
}
</script>
实现类:
//多选删除 | 数组获取;循环删除;
public String deleteMore() throws Exception{
DaoDemoUtils.buildJndi();
ApplicationContext ac = new ClassPathXmlApplicationContext("/dao/datasource-context-dao.xml");
AdminDAO adminDao = (AdminDAO) ac.getBean("AdminDao");
HttpServletRequest request=ServletActionContext.getRequest();
String[] ids = request.getParameterValues("chkbox");
for(int i = 0; i < ids.length; i++)
{
Long id = Long.parseLong(ids[i].toString());
adminDao.delete(id);
}
return "success";
}
编辑器:
见编辑器的实现文档;
修改页面编辑器不现实;
---路径不对,使用绝对路径。
jquery输入验证:
见jquery输入验证的文档。
添加:
private DownloadFile downloadFile;
public DownloadFile getDownloadFile() {
return downloadFile;
}
public void setDownloadFile(DownloadFile downloadFile) {
this.downloadFile = downloadFile;
}
---其中,downloadFile必须是DownloadFile这个的首字母小写,否则出错。
上传下载:
文件路径;
文件大小;
下载次数;
添加时间;
软件性质;状态; ---单选按钮组;
集合组件: ---给定集合选项。
1),最简单的静态写法:
添加页面,
<s:radio list="#{'0':'正常','1':'结束'}" name="downfile.state" value="0" label="状态"/>
修改页面,
<s:radio list="#{'0':'正常','1':'结束'}" name="downloadFile.state" label="状态"/> //struts2会自动绑定value对应的值;
2),简单动态的写法:
实体类;无数据表;
列表页面,显示值对应的汉字;
///////////////////////////////////////////////////////////////////////////////////////////////////
页面数据操作:
1,表单页面数据获取; ---登录页面,已解决。
添加; ---管理员添加;
列表页面数据绑定; ---管理员列表页面;
删除; ---管理员删除;
修改; ---管理员修改;
全选删除; ---管理员批量删除;
添加内容的编辑器; ---关于我们添加、修改页面;
分享到:
相关推荐
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域具有广泛的应用。这个框架的主要目标是提供一个更简单、更强大的方式来构建可维护、可扩展的Java Web应用。Struts2...
Struts2是一个强大的Java web应用程序框架,用于构建可维护、可扩展且结构良好的Web应用程序。这个"Struts2应用程序示例"是专为初学者和开发者设计的,它利用Eclipse 3.3作为集成开发环境,JDK 6.0作为Java运行环境...
浪曦_Struts2应用开发系列_第1讲.Struts2入门与配置_swf
Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护性、可扩展性极高的Web应用的工具和平台。浪曦,作为一个知名的在线教育平台,提供了这个Struts2...
在这个"一个完整的Struts2应用实例"中,我们将深入探讨如何利用Struts2实现用户注册和登录功能,涉及的关键知识点包括Action的实现与配置、Struts2验证框架的应用、以及国际化资源文件的使用。 首先,**Action的...
Struts2是一个强大的Java web应用程序框架,由Apache软件基金会维护,它基于Model-View-Controller(MVC)设计模式,为开发人员提供了构建可维护、结构清晰的Web应用的工具。浪曦_Struts2应用视频源代码是针对该框架...
Struts2是一款强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用程序。浪曦Struts2应用开发系列PPT是面向初学者和进阶者的学习资源,由讲师风中叶讲解,涵盖了Struts2的基础到高级特性...
本系列视频主要讲解Struts2的应用开发,由讲师风中叶进行详细的解析。以下是对各知识点的详细说明: 1. **Struts2入门及配置**: - **安装与环境搭建**:首先,你需要设置Java环境和Apache Tomcat服务器,然后通过...
Struts2是一个强大的Java EE应用程序框架,主要用于构建MVC(Model-View-Controller)架构的Web应用程序。在Java EE环境中,Struts2提供了一种组织和管理应用逻辑的方式,简化了开发过程并提高了代码的可维护性和可...
Struts2是一个强大的Java Web应用程序框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性、可扩展性极高的Web应用程序的工具和组件。本章将带你逐步深入理解并实践如何创建第一个Struts...
Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,主要用于构建可维护性高、结构清晰的企业级Web应用程序。这个应用实例是将Struts2与另外两个流行的技术——Spring和...
Struts2是一个强大的Java Web应用程序框架,它基于Model-View-Controller (MVC)设计模式,为开发者提供了构建可维护性、可扩展性极高的Web应用程序的工具和组件。张龙老师的Struts2应用开发详解源码课程,旨在帮助...
Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用程序。本教程“Struts2应用开发详解03”主要关注两个关键方面:通过Struts2.2源代码生成CHM格式的帮助文档以及类型转换...
Struts2是一个强大的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用程序。这个小工程实例是专为初学者设计的,旨在帮助他们理解并掌握Struts2的核心概念和实践操作。 首先,我们来看一下项目中...
本资源“自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar”提供了黎活明老师在传智博客上讲解的第一个Struts2应用的开发示例,帮助初学者理解并实践Struts2的核心概念和使用方法。...
Struts2应用课堂.pptx
Struts2应用,适合初学者。很好,欢迎下载
浪曦_Struts2应用开发系列_第1讲.Struts2入门与配置2
浪曦_Struts2应用开发系列_第1讲.Struts2入门与配置