详解struts2中配置action的方法
如何解决action太多的问题??
我们因为需要不同的方法,所以往往建立很多不同的类,但是每个类中往往仅仅几行代码,不仅浪费了时间,而且配置起来也很繁琐,所以,建立一个共有的类,然后根据以下方式来操作,从而解决类太多的问题。
1.method方式:建立一个Action类,在类中编写不同的方法,在不同的方法中处理不同的请求。
在struts.xml中配置method属性,让不同的action指向同一个Action类的不同方法。
2.感叹号方式:
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
不需要配置method,直接用!方法名的方式来调用。
DynamicMethodInvocation =动态方法调用
3.通配符方式(官网推荐) “约定大于配置”
checkLogin
checkExists
add
delete
modify
<action name="*" class="myuser.UserAction" method={1}>
</action>
以用户注册的方式,来和大家具体的讲解:
totalaction类:
package user; import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class TotalAction extends ActionSupport {
HttpServletResponse response= ServletActionContext.getResponse();
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session= request.getSession();
private User user; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}
//添加用户到用户列表中。
public String add() throws Exception {
// TODO Auto-generated method stub
UserDAO dao =new UserDAO();
//System.out.println("::"+user.getID());
//System.out.println(""+user.getUserName());
//System.out.println("用户名::"+user.getPwd());
dao.addUser(user);
return this.SUCCESS;
}
//登录时检查用户名是否存在
public String checkLogin() throws Exception {
// TODO Auto-generated method stub
UserDAO dao =new UserDAO();
try {
PrintWriter out= response.getWriter();
if(dao.checkLogin(user))
{
//如果用户名字和密码输入正确,则将用户名和密码保存在session中,用于用户登录后用户名在列表的显示。
session.setAttribute("USERS",user);
out.print("1");
}
else
{
out.print("0");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//检查注册的用户名是否重复
public String checkExists() throws Exception {
// TODO Auto-generated method stub
UserDAO dao = new UserDAO();
PrintWriter out = response.getWriter();
if(dao.checkExists(user))
{
//如果用户名存在则返回1,并在前端显示用户名已存在。
out.print("1");
}
else
{
out.print("0");
}
return null;
} //修改用户名和密码
public String modify() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
//删除用户名和密码
public String delete() throws Exception {
// TODO Auto-generated method stub
return super.execute();
} }
method的方法中struts的配置:
<struts>
<constant name="struts.action.extension" value="action,,"></constant>
<constant name="struts.devMode " value="true"></constant>
<package name="user" namespace="/" extends="struts-default">
<action name="checklogin" class="user.TotalAction" method="checkLogin">
</action>
<action name="CheckUser" class="user.TotalAction" method="checkExists">
</action>
<action name="add" class="user.TotalAction" method="add">
<result name="success">/userlist.jsp</result>
</action>
</package>
</struts>
2,感叹号方式struts的配置。
<struts>
<constant name="struts.action.extension" value="action,,"></constant>
<constant name="struts.devMode " value="true"></constant>
<constant name="struts.enable.DynamicMethodInvocation" value="true" /> //需要配置
<package name="user" namespace="/" extends="struts-default">
<action name="user" class="user.TotalAction">//不需要method方法,只需在jsp页面加载时用!表示。
<result name="success">/userlist.jsp</result>
</action>
</package>
</struts>
如:$.post("user!checkExists",。。。。。
3.通配符方式(官网推荐) “约定大于配置”
<struts>
<constant name="struts.action.extension" value="action,,"></constant>
<constant name="struts.devMode " value="true"></constant>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="user" namespace="/" extends="struts-default">
<action name="*" class="user.TotalAction" method="{1}" >//只需要将其改变成此方式。而jsp页面改变为方法名即可。此方式较为常用。
<result name="success">/userlist.jsp</result>
</action>
</package>
</struts>
如::<form action="add" method="post">
详解struts2中配置action的方法的更多相关文章
- 在Struts2中配置Action
在Struts2中配置Action <package>: 1.定义Action使用<package>标签下的<action>标签完成,一个<package&g ...
- 详解Java中的Object.getClass()方法
详解Object.getClass()方法,这个方法的返回值是Class类型,Class c = obj.getClass(); 通过对象c,我们可以获取该对象的所有成员方法,每个成员方法都是一个Me ...
- javap反编译命令详解&Eclipse中配置javap命令
javap命令所有参数如下图所示: javap 命令用于解析类文件.其输出取决于所用的选项.若没有使用选项,javap 将输出传递给它的类的 public 域及方法.javap 将其输出到标准输出设备 ...
- 详解JavaScript中的arc的方法
今天说说JavaScript在网页中画圆的函数arc! 一.arc所需要的参数设置 1 arc(x, y, radius, startAngle, endAngle, counterclockwise ...
- 详解centos7中配置keepalived日志为别的路径
由于在默认状态下keepalived的日志会写入到/var/log/message中,我们需要将此剥离出来. 在centos 6下可以: (1)首先修改/etc/sysconfig/keepalive ...
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Swift - 自动布局库SnapKit的使用详解1(配置、使用方法、样例)
为了适应各种屏幕尺寸,iOS 6后引入了自动布局(Auto Layout)的概念,通过使用各种 Constraint(约束)来实现页面自适应弹性布局. 在 StoryBoard 中使用约束实现自动布局 ...
- 详解Webwork中Action 调用的方法
详解Webwork中Action 调用的方法 从三方面介绍webwork action调用相关知识: 1.Webwork 获取和包装 web 参数 2.这部分框架类关系 3.DefaultAction ...
- 详解Springboot中自定义SpringMVC配置
详解Springboot中自定义SpringMVC配置 WebMvcConfigurer接口 这个接口可以自定义拦截器,例如跨域设置.类型转化器等等.可以说此接口为开发者提前想到了很多拦截层面的需 ...
随机推荐
- eclipse中maven打包
第一种方式:将依赖包打包进一个jar包中. <build> <plugins> <plugin> <artifactId>maven-compiler- ...
- MYSQL的用户变量(@)和系统变量(@@)
9.3. 用户变量 可以先在用户变量中保存值然后在以后引用它:这样可以将值从一个语句传递到另一个语句.用户变量与连接有关.也就是说,一个客户端定义的变量不能被其它客户端看到或使用.当客户端退出时,该客 ...
- MapReduce调度与执行原理系列文章
转自:http://blog.csdn.net/jaytalent?viewmode=contents MapReduce调度与执行原理系列文章 一.MapReduce调度与执行原理之作业提交 二.M ...
- k-means算法及matlab实现
K-means算法很简单,它属于无监督学习算法中的聚类算法中的一种方法吧,利用欧式距离进行聚合啦. 解决的问题如图所示哈:有一堆没有标签的训练样本,并且它们可以潜在地分为K类,我们怎么把它们划分呢? ...
- page指令属性简要介绍:
page指令属性简要介绍: language=”java” 声明脚本语言的种类,暂时只能用”java” extends=”package.class” 标明JSP编译时需要加入的Java Class的 ...
- CentOS查看操作系统信息(重要)
1.查看物理CPU的个数 [root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc ...
- OpenGL介绍
OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植:OpenGL可以与Visual C++紧密接口,便于实现机械手的有关计算和图 ...
- 【Java面试题】35 List, Set, Map是否继承自Collection接口?
Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法. Set 和List 都继承了Conllection:Set具有与Collection完全一样的接 ...
- php将汉字转换为拼音和得到词语首字母(三)
<?php function getfirstchar($s0){ $fchar = ord($s0{0}); if($fchar >= ord("A") and $f ...
- PHP实现MySQL数据导出为EXCEL(CSV格式)
<?php // 输出Excel文件头,可把user.csv换成你要的文件名 header('Content-Type: application/vnd.ms-excel'); header(' ...