java中,你将前台的所有复选框元素name起一个名字,比如orders,在后台获取值数组。
requestgetParameterValues("orders");循环遍历里面的值
(一款免费开源的JAVA互联网云快速开发平台)微服务分布式代码生成的敏捷开发系统架构。项目代码简洁,注释丰富,上手容易,还同时集中分布式、微服务,同时包含许多基础模块和监控、服务模块。
演示版地址:>
既然使用了Spring,那就可以通过注解形式,在controller中获取到servletContext。
Spring是一个开源框架,由Rod Johnson创建并且在他的著作《J2EE设计开发编程指南》里进行了描述。它是为了解决企业应用开发的复杂性而创建的。
2对于Struts 如何控制、处理客户请求,让我们通过对struts的四个核心组件介绍来具体说明。这几个组件就是:ActionServlet。Action Classes,Action Mapping(此处包括ActionForward),ActionFrom Bean。
3Spring实际上是《Expert One-on-One J2EE Design and Development》一书中所阐述的设计思想的具体实现。在One-on-One一书中,Rod Johnson 倡导J2EE 实用主义的设计思想,并随书提供了一个初步的开发框架实现(interface21 开发包)。
4而Spring 正是这一思想的更全面和具体的体现。Rod Johnson在interface21 开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架。
5使用基本的JavaBeans来完成以前只可能由EJB完成的事情变得可能了。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
在SpringMVC中,我们可以使用注解的方式配置事务,从而避免使用XML进行配置。具体步骤如下:
1 首先,在SpringMVC的配置类中加入@EnableTransactionManagement注解,开启事务支持。
2 在需要进行事务管理的方法上,使用@Transactional注解,标注该方法需要进行事务管理。同时,可以在注解中指定事务管理的属性,如事务传播属性、隔离级别、超时时间等等。
3 在SpringMVC的配置类中,需要配置一个事务管理器。可以使用Spring提供的DataSourceTransactionManager或者Hibernate的HibernateTransactionManager。在配置事务管理器时,需要指定数据源和事务管理属性。
4 如果需要在同一事务中进行多个数据库 *** 作,可以将多个 *** 作放在同一个方法中,并使用@Transactional注解进行标注。这样,在方法执行时,就会自动开启一个事务,并将多个 *** 作放在同一个事务中进行。
使用注解配置事务可以简化配置过程,减少代码量,提高开发效率。同时,也可以使代码更加清晰易懂,便于维护。不过,在使用注解配置事务时,需要注意事务的传播属性和隔离级别,避免出现事务管理的问题。
@Controller
@RequestMapping(/user)
public class UserAction
{
@RequestMapping("/addaction")
public String add(>
在开发 Spring MVC 应用时,可以通过以下步骤来部署 DispatcherServlet 并创建 Spring MVC 配置:
在 webxml 中配置 DispatcherServlet:
xmlCopy code<servlet><servlet-name>dispatcher</servlet-name>
<servlet-class>orgspringframeworkwebservletDispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-dispatcher-servletxml</param-value>
</init-param>
<load-on-startup>1</load-on-startup></servlet><servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern></servlet-mapping>
这个配置将 DispatcherServlet 映射到应用的根路径,即所有请求都会被转发到 DispatcherServlet 进行处理。
创建 Spring MVC 配置文件 spring-dispatcher-servletxml:
xmlCopy code<xml version="10" encoding="UTF-8"><beans xmlns=""xmlns:context=""
xmlns:mvc=""
xmlns:xsi=""
xsi:schemaLocation="
;
<!-- 配置控制器 -->
<mvc:annotation-driven />
<!-- 扫描包 -->
<context:component-scan base-package="comexamplecontroller" />
<!-- 视图解析器 -->
<bean id="viewResolver" class="orgspringframeworkwebservletviewInternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value="jsp" />
</bean></beans>
这个配置文件包含了 Spring MVC 应用的相关配置,包括控制器的扫描、视图解析器的配置等。
以上是部署 DispatcherServlet 和创建 Spring MVC 配置的基本步骤,具体还需根据实际情况进行调整和扩展。
案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入。其实类似的场景还有批量删除多个,也是类似的。
1 前台页面
<thead><tr><th>权限选择</th><th>name</th><th>permission</th></tr></thead>
<c:forEach var="priv" items="${list }">
<tr class="odd gradeX">
<td><input type="checkbox" name="priv_id" value="${privid}" /></td>
<td><c:out value="${privname}"/></td>
<td><c:out value="${privpermission}"/></td>
</tr>
</c:forEach>
2 jquery获得选中的项的id值:
//jquery获取复选框值
var priv_ids =[];//定义一个数组
$('input[name="priv_id"]:checked')each(function(){ // 遍历每一个name为priv_id的复选框,其中选中的执行函数
priv_idspush($trim($(this)val())); // 将选中的值添加到数组priv_ids中
});
consolelog(priv_ids);
var indata = {userId:user_id, privIds:priv_ids};
$post("/ems/priv/setPrivilege", indata, function(data){
if(data != null && dataresult == 'ok'){
consolelog(datamsg);
alert(datamsg);
}else{
alert(datamsg);
}
}, 'json');
提交的json格式的数据:var indata = {userId:user_id, privIds:priv_ids};
其中的 priv_ids 是一个有 id 组成的数组。
3 springMVC接收数组参数:
@RequestMapping(value="/setPrivilege")
@ResponseBody
public void setPrivilege(@RequestParam(value = "privIds[]") Integer[] privIds, Integer userId, PrintWriter writer){
Systemoutprintln(JSONtoJSONString(privIds));
Systemoutprintln(JSONtoJSONString(userId));
int result = thisprivilegeServicesetPrivilegeForUser(privIds, userId);
Systemoutprintln("result=" + JSONtoJSONString(result));
Map<String, String> map = new HashMap<>();
if(result > 0){
mapput("result", "ok");
mapput("msg", "设置成功");
writerwrite(JSONtoJSONString(map));
}
}
看到使用了:@RequestParam(value = "privIds[]") Integer[] privIds 来获取前台传来的数组参数。
springMVC接收参数时,最好不要使用 int, long等原始类型,而应该使用它们对应的包装类型,不然当传入的参数为空时,会报错,而包装类型可以使用null表示传入的空值。
4 service层的处理,很简单,直接使用map向mybatis传递参数:
@Service("privilegeService")
@Transactional
public class PrivilegeServiceImpl implements PrivilegeService {
@Autowired
private PrivilegeMapper privilegeMapper;
@Override
@Transactional(readOnly=true)
public List<Privilege> getAllPrivilege() {
return privilegeMappergetAllPrivilege();
}
@Override
public int setPrivilegeForUser(Integer[] privIds, Integer userId) {
Map<String, Object> map = new HashMap<>();
mapput("privIds", privIds);
mapput("userId", userId);
return thisprivilegeMappersetPrivilegeForUser(map);
}
}
5 最后看 mybatis 的 xml 中的sql如何写:
<insert id="setPrivilegeForUser" parameterType="map">
insert into user_privilege(user_id, privilege_id) values
<foreach collection="privIds" index="index" item="item" separator=",">
( #{userId}, #{item} )
</foreach>
</insert>
看到使用了 foreach 来循环传递进来的数组 privIds,最后组成的sql语句如下所示:
insert into user_privilege(user_id, privilege_id) values (3, 1),(3,2),(3,3),(3,4)
user_id 不变,而privilege_id 是数组 privIds 中的循环出来的 id 值。其实就是数据库的批量插入。
6 批量删除多个的处理
删除时,和前面批量插入处理也是极其类似的,只在最后mybatis中xml中sql的写法有点区别:
<delete id="deleteByIds" parameterType="javautilList">
delete from user_privilege where id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
比较批量删除和批量插入,可以看出 foreach 中的 open="(" 和 close=")" 只在循环的开始和结束会加上,而 separator="," 是每循环一次,就加一次逗号。
7 批量插入传入对象List的例子:
<insert id="batchInsertStudent" parameterType="javautilList">
insert into student (id,name,sex,tel,address) values
<foreach collection="list" item="item" index="index" separator="," >
(#{itemid},#{itemname},#{itemsex},#{itemtel},#{itemaddress})
</foreach>
</insert>
其实掌握了 批量插入和批量删除,批量更新也是一样的。
以上就是关于java request获取二维数组全部的内容,包括:java request获取二维数组、JeeSpringCloud-互联网云快速开发框架、spring mvc在controller中如何获取servletcontext等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)