Struts2-前端通过Struts2框架传递数据的demo

前端写一个简单的表单

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--action是服务器的地址-->
<form action="${pageContext.request.contextPath}/loginByInterface.action" method="post">
	用户:<input type="text" name="uaccount" id="uaccount" /><br>
	密码:<input type="password" name="upwd" id="upwd"><br>
	<input type="submit" value="提交">
</form>
</body>
</html>

struts.xml编写(action的配置)

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入约束 -->
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
	
<!-- action的配置 -->
<struts>
	<constant name="struts.i18n.encoding" value="utf-8"></constant>
	<package name="uaccountDemo"  extends="struts-default" namespace="/" >
	      <action name="userlogin" class="com.sofency.action.UserAction" method="login">
<!-- type属性 --> 
<!-- 默认值是请求转发的意思,请求转发的特点就是 地址栏不发生变化   type='dispatcher' -->
<!--  重定向 会将地址栏的地址发生变化-->	 
			 <result name="success" type="redirect">/login.jsp</result>
		</action>
    </package>
</struts>

java后台接受并处理前端穿来的数据的代码

package com.sofency.action;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{
	
	public String register(){
		//写注册的逻辑  服务层 Dao层 
		System.out.println("register");
		return SUCCESS;//接口中的常量
	}
	
	public String login(){
		HttpServletRequest request = ServletActionContext.getRequest();
		//底层会处理表单为中文的问题  原理--转码操作
		String uaccount = request.getParameter("uaccount");
		String upwd = request.getParameter("upwd");
		System.out.println(uaccount+"--"+upwd);
		//密码验证逻辑暂时不写
		System.out.println("login");
		return SUCCESS;//接口中的常量
	}
}

其中接收还有两种方式 1. 通过ActionContext获取
处理代码如下

	public String login(){
//第一种方式使用ActionContext进行获取所有的参数 存储到map中进行遍历读取
		//1.使用ActionContext类获取
		ActionContext context = ActionContext.getContext();
		//2. 调用方法获取表单数据
		// key表示的表单的name属性  value 表示表单输入的值
		Map<String,Object> map = context.getParameters();
		
		Set<String> set = map.keySet();//底层就是map形式的
		
		for(String key:set) {
			Object[] obj = (Object[])map.get(key);//多选框时会用到
			System.out.println(Arrays.toString(obj));
		}
		System.out.println("login");
		return SUCCESS;//接口中的常量
	}
}

2.通过接口方式实现 实现servletRequestAware接口 获取到request 耦合性非常低

package com.sofency.action;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
public class ClientAction extends ActionSupport implements ServletRequestAware{
	private HttpServletRequest request;
	@Override
	public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request= request;
	}

	//使用request接口注入的方式进行获取表单数据
	@Override
	public String execute() throws Exception {
		String uaccount = request.getParameter("uaccount");
		String upwd = request.getParameter("upwd");
		System.out.println(uaccount+"--"+upwd);
		return SUCCESS;
	}
	
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值