3、struct2的常见配置
1、在eclipse中如何复制一个工程作为一个新的工程



在struct.xml中:
<result name="success">/login_sucess.jsp</result>
默认result的那么缺省值就是success,上面的语句等价于
<result >/login_sucess.jsp</result>
2、在上面一节中我们编写的action
package com.weiyuan.test; /**
* struct2的action可以不继承任何框架的接口
* 1、默认调用的是execute()方法
* */
public class LoginAction {
private String username;
private String password; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String execute() throws Exception{
System.out.println("execute is called");
System.out.println("execute is called" +username);
System.out.println("execute is called"+password);
if("admin".equals(username)&&"admin".equals(password)){
return "success";
}else{
return "error";
}
} }
没有实现任意的接口,需要自己手动书 public String execute() throws Exception方法,如果写错了就会出现问题,为了解决我们可以让自己编写的ation实现Action这个接口,这个接口默认继承类需要实现 public String execute() throws Exception这个方法,还提供了一些常量
/*
* Copyright (c) 2002-2007 by OpenSymphony
* All rights reserved.
*/
package com.opensymphony.xwork2; /**
* All actions <b>may</b> implement this interface, which exposes the <code>execute()</code> method.
* <p/>
* However, as of XWork 1.1, this is <b>not</b> required and is only here to assist users. You are free to create POJOs
* that honor the same contract defined by this interface without actually implementing the interface.
*/
public interface Action { /**
* The action execution was successful. Show result
* view to the end user.
*/
public static final String SUCCESS = "success"; /**
* The action execution was successful but do not
* show a view. This is useful for actions that are
* handling the view in another fashion like redirect.
*/
public static final String NONE = "none"; /**
* The action execution was a failure.
* Show an error view, possibly asking the
* user to retry entering data.
*/
public static final String ERROR = "error"; /**
* The action execution require more input
* in order to succeed.
* This result is typically used if a form
* handling action has been executed so as
* to provide defaults for a form. The
* form associated with the handler should be
* shown to the end user.
* <p/>
* This result is also used if the given input
* params are invalid, meaning the user
* should try providing input again.
*/
public static final String INPUT = "input"; /** 使用接口可以便于代码编程的规范,定义一些列常量和对应的方法,比如mqtt模块就可以将host admin,等常见定义到接口中,实现和业务的具体分开
package com.weiyuan.test; import com.opensymphony.xwork2.Action; /**
* struct2的action可以不继承任何框架的接口
* 1、默认调用的是execute()方法
* */
public class LoginAction implements Action {
private String username;
private String password; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String execute() throws Exception{
System.out.println("execute is called");
System.out.println("execute is called" +username);
System.out.println("execute is called"+password);
if("admin".equals(username)&&"admin".equals(password)){
return "success";
}else{
return "error";
}
} }
* The action could not execute, since the
* user most was not logged in. The login view
* should be shown.
*/
public static final String LOGIN = "login";
/**
* Where the logic of the action is executed.
*
* @return a string representing the logical result of the execution.
* See constants in this interface for a list of standard result values.
* @throws Exception thrown if a system level exception occurs.
* <b>Note:</b> Application level exceptions should be handled by returning
* an error value, such as <code>Action.ERROR</code>.
*/
public String execute() throws Exception;
}
我们的action如下
package com.weiyuan.test; import com.opensymphony.xwork2.Action; /**
* struct2的action可以不继承任何框架的接口
* 1、默认调用的是execute()方法
* */
public class LoginAction implements Action {
private String username;
private String password; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String execute() throws Exception{
System.out.println("execute is called");
System.out.println("execute is called" +username);
System.out.println("execute is called"+password);
if("admin".equals(username)&&"admin".equals(password)){
return "success";
}else{
return "error";
}
} } 2、常用配置2:如何在开发阶段,我们修改了struct.xml文件,我们不重启就可以让配置文件的修改有效了有下面的两种方式,注意在正式的运营环境最好不要配置该参数
第一:在工程的src目录下新建文件
struts.properties
配置文件的内容为
struts.configuration.xml.reload=true 第二种方式:在struct.xml的<structs>标签下配置该属性
<?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>
<!-- 当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 需要继承extends="struts-default",否则struct2的拦截器就无法使用 -->
<package name="struct2" extends="struts-default">
<action name="login" class="com.weiyuan.test.LoginAction">
<result name="success">/login_sucess.jsp</result>
<result name="error">/login_error.jsp</result>
</action>
</package> </struts> 3、struct2如何给页面更加有效的错误的提示在struct.xml中进行配置
<?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>
<!-- 当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 会提供更加友好的提示信息 -->
<constant name="struts.devMode" value="true"/>
<!-- 需要继承extends="struts-default",否则struct2的拦截器就无法使用 -->
<package name="struct2" extends="struts-default">
<action name="login" class="com.weiyuan.test.LoginAction">
<result name="success">/login_sucess.jsp</result>
<result name="error">/login_error.jsp</result>
</action>
</package> </struts>
总结:
1、<result>标签的name属性,如果不配置,那么缺省值为success
2、Struts2提供了一个Action接口,在Action接口中定义了一些常量和execute方法
我们可以使用该接口,这样开发更规范
3、struts2的常用配置参数
* struts.configuration.xml.reload
--当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置
* struts.devMode
--会提供更加友好的提示信息
以上参数配置方式有两种:
* 在struts.properties文件中配置
* 在struts.xml配置文件中
3、struct2的常见配置的更多相关文章
- MyEclipse常见配置及调试
常见配置 1.配置workspace ----- 建议不要采用含有空格和中文目录 所有代码保存workspace空间中2.新建工程时,设置工程需要jre环境MyEclipse提供多种内置layout ...
- Httpd2.2常见配置及功能
Httpd 2.2常见配置 要配置http服务的配置文件,先备份一下,养成良好习惯,如果误操作导致http服务起不来,就可以将备份的主配置文件重新覆盖一下 httpd配置文件的组成:有三大部分组成,其 ...
- Spring Boot常见配置及错误
一.SpringBoot常见配置 (1)SpingBoot与MyBatis集成时跟踪SQL语句 log4j: logger: java: sql: ResultSet: TRACE (2)日志跟踪 d ...
- httpd常见配置
httpd常见配置 配置文件 /etc/httpd/conf/httpd.conf 主配置文件 /etc/httpd/conf.d/*.conf 辅助配置文件 配置文件语法检查及重新加载配置文 ...
- Struts2常见配置(草稿)
Struts2框架配置文件加载的顺序(了解加载配置文件的顺序,重点掌握struts.xml配置文件) 1.Struts2框架的核心是StrutsPrepareAndExecuteFilter过滤器,该 ...
- Java-JVM调优常见配置举例
常见配置举例 堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统 下,一般限制在1.5G~ ...
- Redis系列四 Redis常见配置
redis.conf常见配置 参数说明redis.conf 配置项说明如下:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no2. ...
- Mybatis常见配置错误总结
Mybatis常见配置错误总结 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionF ...
- web.xml的常见配置
web.xml的常见配置 <!-- 配置全局的编码过滤器 --> <filter> <description>编码过滤器</description> & ...
随机推荐
- 【Socket通信】关于Socket通信原理解析及python实现
Socket(套接字)通信{网络通信其实就是Socket间的通信},首先了解下概念:[来源于百度百科] "两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.& ...
- Alpha冲刺 —— 5.6
这个作业属于哪个课程 软件工程 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 Alpha冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.展 ...
- Alpha冲刺 —— 5.4
这个作业属于哪个课程 软件工程 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 Alpha冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.展 ...
- Java并发编程 (十) 多线程并发拓展
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.死锁 1.死锁的定义 所谓的死锁是指两个或两个以上的线程在等待执行的过程中,因为竞争资源而造成的一种 ...
- Java实现 LeetCode 812 最大三角形面积 (暴力)
812. 最大三角形面积 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积. 示例: 输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0] ...
- Java实现 LeetCode 729 我的日程安排表 I(二叉树)
729. 我的日程安排表 I 实现一个 MyCalendar 类来存放你的日程安排.如果要添加的时间内没有其他安排,则可以存储这个新的日程安排. MyCalendar 有一个 book(int sta ...
- Java实现 LeetCode 684 冗余连接(并查集)
684. 冗余连接 在本问题中, 树指的是一个连通且无环的无向图. 输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, -, N) 的树及一条附加的边构成.附加的边的两个顶点包含在1到N中间 ...
- Java实现 LeetCode 482 密钥格式化
482. 密钥格式化 给定一个密钥字符串S,只包含字母,数字以及 '-'(破折号).N 个 '-' 将字符串分成了 N+1 组.给定一个数字 K,重新格式化字符串,除了第一个分组以外,每个分组要包含 ...
- Java实现 LeetCode 160 相交链表
160. 相交链表 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4, ...
- 【CSS】常用色值
常用颜色: 嫣红(red):#e54d42 桔橙(orange):#f37b1d 明黄(yellow):#fbbd08 橄榄(olive):#8dc63f 森绿(green):#39b54a 天青(c ...