• Struts2入门问题


    一 使用Struts 2 开发程序的基本步骤
    加载Struts2 类库
    配置web.xml文件
    开发视图层页面
    开发控制层Action
    配置struts.xml文件

    部署、运行项目

    第一步先导架包:在web-inf/lib:

    struts2-core-xxx.jar

    Struts 2框架的核心类库

    xwork-core-xxx.jar

    XWork类库,Struts 2的构建基础

    ognl-xxx.jar

    Struts 2使用的一种表达式语言类库

    freemarker-xxx.jar

    Struts 2的标签模板使用类库

    javassist-xxx.GA.jar

    对字节码进行处理,代码生成工具

    commons-fileupload-xxx.jar

    文件上传时需要使用

    commons-io-xxx.jar

    Java IO扩展

    commons-lang-xxx.jar

    包含了一些数据类型的工具类java.lang

    第二步配置web.xml文件:

    filter>
    <filter-name>struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.ng.filter.
    StrutsPrepareAndExecuteFilter
    </filter-class>
    </filter>

    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    将将全部请求定位到指定的Struts 2过滤器中

    第三步配置jsp页面:

    <div>
    		<h1>
    			<!--显示Struts Action中message的属性内容-->
    			<s:property value="message"/>
    		</h1>
    	</div>
    	<div>
    		<form action="helloWorld.action" method="post">
    			请输入您的姓名:
    			<input name="name" type="text" />
    			<input type="submit" value="提交" />
    		</form>
    	</div>

    第四步写Action:

    public class HelloWorldAction implements Action {
    	// 用户输入的姓名
    	private String name = "";
    	// 向用户显示的信息
    	private String message = "";
    	public String execute() {
    		// 根据用户输入的姓名,进行"Hello,XXXX!"的封装
    		this.setMessage("Hello,"+this.getName()+"!");
    		// 处理完毕,返回导航结果的逻辑名
    		return "success";
    	}
    	…	//省略setter、getter方法
    }
    

    第五步:关键一步:

    配置Struts 2配置文件(struts.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>
    	<package name="default" namespace="/" extends="struts-default">
    		<action name="helloWorld" 
    					class="cn.jbit.strutsdemo.HelloWorldAction">	
    			<result name="success">helloWorld.jsp</result>
    		</action>
    	</package>
    </struts>
    

    可以启动服务器,发布项目。

    思考?如何在登录成功页面保存用户信息?

    Struts 2访问Servlet API的方式
    与Servlet API解耦的访问方式(建议)
    与Servlet API耦合的访问方式

    1.解耦方式:

    public class LoginAction implements Action {
    	private static final String CURRENT_USER = "CURRENT_USER";	
    	… //省略username、password属性及其setter和getter方法
    	public String execute() {
    		if("jbit".equals(username) && "bdqn".equals(password)) {
    			Map<String,Object> session = null;
    			session = ActionContext.getContext().getSession();
    			if(session.containsKey(CURRENT_USER)) {				
    				session.remove(CURRENT_USER);
    			}
    			session.put(CURRENT_USER, username);
    			return "success";
    		} else {
    			return "error";
    		}
    	}
    }
    
    2.耦合方式:

    public class LoginAction implements Action {
    	private static final String CURRENT_USER = "CURRENT_USER";	
    	… //省略username、password属性及其setter和getter方法
    	public String execute() {			
    		if("jbit".equals(username) && "bdqn".equals(password)) {	
    			HttpSession session = null;
    			session = ServletActionContext.getRequest().getSession(); 			
                           if(session.getAttribute(CURRENT_USER) != null) {
    				session.removeAttribute(CURRENT_USER);
    			}
    			session.setAttribute(CURRENT_USER, username);	
    			return "success";
    		} else {			
    			return “error";
    		}
    	}
    }
    


    
    

    
    

    页面取值可以用EL表达式

    Struts 2的提供了数据验证机制继承ActionSupport类来完成Action开发ActionSupport类不仅对Action接口进行简单实现,同时增加了验证、本地化等支持 
    public class LoginAction extends ActionSupport{
    //......省略代码
    public void validate() {	
    if(this.getUsername().length()==0){
    	addFieldError("name","用户名不能为空");
    }
    if(this.getPassword().length()==0){
    	addFieldError("pwd", "密码不能为空");
    }
    }	
    //......省略代码
    }
    
    可使用Struts2标签将错误消息展示在页面:
    <%@ taglib prefix="s" uri="/struts-tags"%>

    <s:form>…</s:form>

    表单标签

    <s:textfield>…</s: textfield >

    文本输入框

    <s:password>…</s: password >

    密码输入框

    <s:textarea>…</s: textarea >

    文本域输入框

    <s:radio>…</s: radio >

    单选按钮

    <s:checkbox>…</s: checkbox >

    多选框

    <s:submit />

    提交标签

    <s:reset />

    重置标签

    <s:hidden />

    隐藏域标签



    <s:fielderror/>可以将显示服务器返回的错误信息。
    常用通用标签:

    条件标签

    <s:if>……</s:if>

    根据表达式的值,

    判断将要执行的内容

    <s:elseif>……</s:elseif>

    <s:else>……</s:else>

    迭代

    <s:iterator>……</s: iterator >

    用于遍历集合



    <s:if test="表达式">
        需要执行的代码
    </s:if>
    <s:elseif test="表达式">
      需要执行的代码
    </s:elseif>
    <s:else>
        需要执行的代码
    </s:else>
    2.迭代
    <s:iterator value="集合对象" status="status" id="name">
        读取集合对象并输出显示
    </s:iterator>
    value属性:需要进行遍历的集合对象
    status属性:表示当前迭代对象的一个实例
    id属性:当前迭代元素的id,可直接访问元素,该参数可选

    Action的实现方式
    实现Action接口
    继承Action接口实现类ActionSupport类
    Struts 2中提供了解耦和耦合两种方式实现对Servlet API的访问
    ActionSupport类提供了对数据验证的支持
    validate()方法
    Struts 2提供强大的标签支持
    表单标签
    通用标签
















  • 相关阅读:
    c函数调用过程
    查找匹配行及前后5行
    指向类成员函数的指针
    C++箴言:理解typename的两个含义
    不定参数
    定时器
    unix编译
    sed
    大脑皮层的梦工厂
    静态链接库顺序问题
  • 原文地址:https://www.cnblogs.com/jatpeo/p/11767559.html
Copyright © 2020-2023  润新知