FormBean中使用Map<String, Object> map接收参数

本文介绍了如何使用Struts框架实现一个简单的用户登录页面,包括页面布局、表单提交处理以及与ActionForm和Action类的交互。通过实例演示了如何在前端展示输入框并获取用户输入,同时在后端验证用户名和密码,并返回登录成功或失败的状态。

 

a.编写jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="html" uri="http://jakarta.apache.org/struts/tags-html" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 <table boder="1" bordercolor="green" width="100%">
  <html:form action="/general.do?method=loadArea" method="post">
     <tr>
       <td>用户名:</td>
       <td>
         <html:text property="value(name)"></html:text>  
       </td>
     </tr> 
     <tr>
       <td>密码:</td>
       <td>
        <html:text property="value(password)"></html:text>
        </td>
     </tr>
     <tr>
     <td colspan="2">
       <html:submit value="submit"></html:submit>
     </td>
     </tr>
  </html:form>
  </table>
</body>
</html>

 

b.编写一个ActionForm

package com.hsp.form;

import java.util.HashMap;
import java.util.Map;

import org.apache.struts.action.ActionForm;

public class MapForm extends ActionForm{
	
	private Map<String, Object> myMap = new HashMap<String, Object>();
	
	
	public void setValue(String key, Object value){
		if(key != null && value != null){
			myMap.put(key, value);
		}
	}
	
	public Object getValue(String key){
		if(key != null){
		   return myMap.get(key);
		}else{
			return null;
		}
		
	}

}

 

c.编写Action

package com.hsp.action;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.hsp.bean.Area;
import com.hsp.form.MapForm;

public class GeneralAction extends DispatchAction{
	

	public ActionForward loadArea(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
	   
		MapForm mapForm = (MapForm)form;
		
		String name =  (String)mapForm.getValue("name");
		String password = (String)mapForm.getValue("password");
		String name2 = request.getParameter("value(name)"); //也可以这么取值
//		String password = request.getParameter("password");
		System.out.println("name2:"+name2);
		System.out.println(name);
		System.out.println(password);
		
		List<Area> areas = new ArrayList<Area>();
		Area area1 = new Area("hubei", "湖北");
		Area area2 = new Area("hunan", "湖南");
		Area area3 = new Area("guangdong", "广东");
		Area area4 = new Area("sichuan", "四川");
		areas.add(area1);
		areas.add(area2);
		areas.add(area3);
		areas.add(area4);
		
		request.setAttribute("areas", areas);
	    

		return mapping.findForward("success");
	}

}

 

/** * 根据formBean修改指定参数 / public static boolean updateData(Long id, String tableName, Map<String, Object> fields) throws BusinessException, SQLException { StringBuilder fieldNames = new StringBuilder(""); Iterator<Entry<String, Object>> iter = fields.entrySet().iterator(); if (fields.isEmpty()) { log.error("更新字段为空"); return true; } else { int count = 0; List<Object> fieldValues = new ArrayList<>(); while (iter.hasNext()) { ++count; Entry<String, Object> entry = iter.next(); String fieldName = (String) entry.getKey(); Object fieldValue = entry.getValue(); String splitStr = count == fields.size() ? "" : ","; / 这段代码是一个Java中的三目运算符,它的作用是根据一个条件来决定一个字符串变量的值。 具体来说,这行代码的意思是:如果 count 等于 fields.size(),那么 splitStr 的值为一个空字符串 "",否则 splitStr 的值为逗号 ","。 通常情况下,这行代码用于在生成一个字符串时,根据某些条件来决定是否需要添加分隔符。如果这些条件不满足,就不需要添加分隔符,否则需要添加一个逗号分隔符。*/ fieldNames.append(fieldName + "=?" + splitStr); fieldValues.add(fieldValue); } JDBCAgent jdbc = null; String sql = "update " + tableName + " set " + fieldNames.toString() + " where id =?"; fieldValues.add(id); boolean isUpdate; try { jdbc = new JDBCAgent(); isUpdate = jdbc.execute(sql, fieldValues) > 0; } catch (Exception var15) { log.error(sql); log.error(fieldValues); log.error(var15.getMessage(), var15); throw var15; } finally { if (null != jdbc) { jdbc.close(); } } return isUpdate; } }以这样的形式写一个在java代码中,修改数据库表名为smsserver_out的字段status,条件是如果第一:数据库中字段status的值为U或者Q,第二:user_id等于前端传过来的值,需要考虑的情况为考虑user_id可能是一个也有可能是多个,也有可能为空,为防止sql注入,要采用预编译的方式
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值