struts2.1.6 action 03

表单提交有中文尽量使用post

<constant name="struts.i18n.encoding" value="GBK"/>   这是一个bug 

<filter-class>org.apache.struts2.dispatcher.FileterDispatcher</filter-class>        web.xml 说可以解决不过我没有试出来就没做了,用spring 解决乱码安全

package com.demo.action;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
	private String name;

	public String add() {
		System.out.println("name = " + name);
		return SUCCESS;
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

body>
	使用action 属性接收参数,测试中文问题
	<form action="user/user!add" method="post">
姓名:<input type="text" name="name"></input>
	 <input type="submit" value="submit"/>
	</form>
  </body>


数据校验

package com.demo.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
    private String name;
    
    public String add () {
        if(name == null || !name.equals("admin")) {
            this.addFieldError("name", "name is error");
        //    this.addFieldError("name", "name is long");
            return ERROR;
        }
        return SUCCESS;
    }
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
}

  <body>
使用addFiledError 方法和s:filedError 标签简单处理数据校验
<a href="user/user!add?name=a">添加用户</a>
  </body>

 <body>
	User Add Error!
	<s:fielderror fieldName="name" theme="simple"/>
	<br />
	<s:property value="errors.name[0]"/>
	<s:debug></s:debug>

  </body>




context 把他看成周围的环境

例如: servletContext 即servlet 周围的环境 actionContext   即action周围的环境 及里面执行的过程或者一些东西

package com.demo.action;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction1 extends ActionSupport{

	private Map request;
	private Map session;
	private Map application;
	
	public LoginAction1 () {
		request = (Map) ActionContext.getContext().get("request");
		session = ActionContext.getContext().getSession();
		application = ActionContext.getContext().getApplication();
	}
	@Override
	public String execute() throws Exception {
		request.put("r1", "r1");
		session.put("s1", "s1");
		application.put("a1", "a1");
		return SUCCESS;
	}
}

// IOC 控制反转 常用这种方式
 package com.demo.action;

import java.util.Map;

import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{

    private Map<String,Object> request;
    private Map<String,Object> session;
    private Map<String,Object> application;
    
    @Override
    public String execute() throws Exception {
        request.put("r1", "r1");
        session.put("s1", "s1");
        application.put("a1", "a1");
        return SUCCESS;
    }
    public void setRequest(Map<String, Object> request) {
        this.request = request;
    }
    public void setSession(Map<String, Object> session) {
        this.session = session;
    }
    public void setApplication(Map<String, Object> application) {
        this.application = application;
    }
}

package com.demo.action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction3 extends ActionSupport{

    private HttpServletRequest request;
    private HttpSession session;
    private ServletContext application;
    
    public LoginAction3 () {
        request = ServletActionContext.getRequest();
        session = request.getSession();
        application = session.getServletContext();
    }
    @Override
    public String execute() throws Exception {
        request.setAttribute("r1", "r1");
        session.setAttribute("s1", "s1");
        application.setAttribute("a1", "a1");
        return SUCCESS;
    }
}

package com.demo.action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction4 extends ActionSupport implements ServletRequestAware{

    private HttpServletRequest request;
    private HttpSession session;
    private ServletContext application;
    
    @Override
    public String execute() throws Exception {
        request.setAttribute("r1", "r1");
        session.setAttribute("s1", "s1");
        application.setAttribute("a1", "a1");
        return SUCCESS;
    }
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
        this.session = request.getSession();
        this.application = session.getServletContext();        
    }
    
}

<?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="login" extends="struts-default" namespace="/login">
        <action name="login*" class="com.demo.action.LoginAction{1}">
            <result> 
				/user_login_success.jsp
            </result>
        </action>
    </package>
</struts>



<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<% String context = request.getContextPath(); %>
<html>
<head>
</head>
<body>
取得Map类型request,session,application,真实类型 HttpServletRequest, HttpSession, ServletContext的引用:
<ol>
	<li>前三者: 依赖于容器</li>
	<li>前三者:IOC</li>(只有这种)
	<li>后三者: 依赖于容器</li>
	<li>后三者: IOC</li><br/>
<form name="f" action="" method="post">
用户名: <input type="text" name="name"/>
密码: <input type="text" name="password"/><br/>
<input type="button" value="submit1" οnclick="javascript:document.f.action='login/login1';document.f.submit();"/>
<input type="button" value="submit2" οnclick="javascript:document.f.action='login/login2';document.f.submit();"/>
<input type="button" value="submit3" οnclick="javascript:document.f.action='login/login3';document.f.submit();"/>
<input type="button" value="submit4" οnclick="javascript:document.f.action='login/login4';document.f.submit();"/>
</form>
</ol>	
</body>
</html>

<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
  <head>
  </head>
  <body>
	User Login Success ! <br/>
	<s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br />
	<s:property value="#session.s1"/> | <%=session.getAttribute("s1") %> <br />
	<s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br />
	<s:property value="#attr.a1"/><br>
	<s:property value="#attr.s1"/><br/>
	<s:property value="#attr.r1"/><br/>
	<s:debug></s:debug>
  </body>
</html>

loginaction2



<?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="login" extends="struts=default" namespace="/login">
		<action name="login*" class="com.demo.action.LoginAction{1}">
			<result>/user_login_success.jsp</result>
		</action>		
	</package>
</struts>	

<?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"/>     
    <include file="login.xml"></include>
</struts>
 
把login.xml 文件包含到struts.xml 里面来
<include file="login.xml"></include>


方便分成模块,便于开发


<constant name="struts.devMode" value="true"/>     
    <package name="front" extends="struts-default" namespace="/">
    	<default-action-ref name="index"></default-action-ref>
        <action name="index">
            <result> 
				/default.jsp
            </result>
        </action>
    </package>

<default-action-ref name="index"></default-action-ref> 如果访问不存在便 默认以index.action 为主   





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值