(1)编辑界面,placeholder="提示",由方法中的model中的数据进行显示。里面name的值与domain中你的字段相同,这样提交才能自动封装进去。表单中可以使用value="#"做一个默认值,这样表单提交的时候不会出现提交错误。
jsp界面
<table align="center" border="1" width="50%px">
<tr>
<td><h5>修改管理员</h5></td>
</tr>
<tr>
<td>
<form action="${pageContext.request.contextPath}/partner/insert" method="post" enctype="multipart/form-data">
<input type="text" placeholder="合作伙伴名称" value="${byId.partner_name}" name="partner_name"/><br/>
<input type="text" placeholder="url地址" value="${byId.url_address}" name="url_address"/><br/>
<select name="state">
<option selected="selected" value="#">请选择</option>
<option value="1" <c:if test="${dto.prizepool.status eq '1'}"> selected="selected"</c:if>>启用</option>
<option value="0" <c:if test="${dto.prizepool.status eq '0'}"> selected="selected"</c:if>>禁用</option>
</select><br/><br/>
<input type="file" placeholder=" 上传logo文件" name="upload"/><br/>
<input type="text" placeholder="排序" value="${byId.id}" name="id"/><br/>
<input type="submit" value="保存">
<input type=button value=返回 onclick="window.history.back()">
</form>
</td>
</tr>
</table>
java方法接受处理,AdminPartner类型接收属于它的类型,如表单中没有的数据库内容,可在方法中进行赋值,MultipartFile接受上传的文件,另外,如上传的表单中没有填写完全,表单是无法提交的,需要进行默认值。此处的上传文件,还牵涉到配置问题见文末。
@RequestMapping("/insert")
public String insetPartner(AdminPartner adminPartner,HttpServletRequest request, MultipartFile upload) throws IOException {
System.out.println("springmvc文件上传...");
//上传的位置
String path = request.getSession().getServletContext().getRealPath("/partnerimges/");
//判断该路径是否存在
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
//上传文件项
String filename = upload.getOriginalFilename();
String uuid = UUID.randomUUID().toString().replace("-", "");
String saveName = uuid + "_" + filename.substring(filename.lastIndexOf(File.separator)+1);
//新的图片
File nwefile = new File(path, saveName);
//把内存图片写入到磁盘中
upload.transferTo(nwefile);
adminPartner.setLogo_url(saveName);//添加名
adminPartner.setCreate_time(new Date());//添加创建时间
if (partnerService.findById(adminPartner) == null) {
partnerService.savePartner(adminPartner);
} else{
partnerService.updatePartner(adminPartner);
}
return "Partner-list";
}
(2)显示界面,把表现层存在model中的数据遍历出显示,下面的按钮对应不同的方法需要自行撰写。
<table align="center" border="1" width="50%px" >
<tr>
<th>序号</th>
<th>logo</th>
<th>合作伙伴名称</th>
<th>Url路径</th>
<th>状态</th>
<th>创建时间</th>
</tr>
<c:forEach items="${allPartner}" var="partner">
<tr>
<th>${partner.id}</th>
<th><img src="${pageContext.request.contextPath}/partnerimges/${partner.logo_url}" /></th>
<th>${partner.partner_name}</th>
<th>${partner.url_address}</th>
<th>${partner.state}</th>
<th>${partner.create_time}</th>
<th>
<button onclick="window.open('${pageContext.request.contextPath}/partner/findById?id=${partner.id}')" type="submit" >修改</button>
</th>
</tr>
</c:forEach>
<th>
<a href="${pageContext.request.contextPath}/pages/Partner-edit.jsp">
<button>新增</button>
</a>
</th>
</table>
/*查询所有patner*/
@RequestMapping("/findAll")
public String findAllPartner(Model model){
List<AdminPartner> allPartner = partnerService.findAllPartner();
model.addAttribute("allPartner",allPartner);
return "Partner-list";
}
(3)表单回显
<table border="1">
<tr>
<td colspan='8' style="height:40px"><h5>管理员</h5></td>
</tr>
<tr>
<td colspan='8' style="height:40px">
<form style="display: inline" action="${pageContext.request.contextPath}/admin/findUserByName">
用户名:<input type="text" name="user_name"/>
<input type="submit" value="查询"/>
</form>
状 态:
<select class="form-control" name="statu" id="changeStatus">
<option selected="selected">全部</option>
<option value="true">启用</option>
<option value="false">禁用</option>
</select>
</td>
</tr>
<tr>
<td>序号</td>
<td>用户名</td>
<td>真实姓名</td>
<td>角色权限</td>
<td>状态</td>
<td>创建时间</td>
<td>最近登录</td>
<td>操作</td>
</tr>
<c:forEach items="${adminList}" var="admin">
<tr>
<td>${admin.id}</td>
<td>${admin.user_name}</td>
<td>${admin.real_name}</td>
<td>${admin.role_name}</td>
<td>
<c:choose>
<c:when test="${admin.status==true}">启用</c:when>
<c:when test="${admin.status==false}">禁用</c:when>
</c:choose>
</td>
<td>${admin.regist_timeStr}</td>
<td>${admin.last_login_timeStr}</td>
<td><a href="${pageContext.request.contextPath}/admin/toChange?id=${admin.id}">修改</a></td>
</tr>
</c:forEach>
</table>
<br/>
<%--${pageContext.request.contextPath} 工程路径--%>
<a href="${pageContext.request.contextPath}/admin/toAdd">
<button>新增</button>
</a>
(4).添加jsp时间选项+后台sql
<form>
<!-- 追加注册时间查询 -->
<div class="form-group" style="margin-left: -15px;margin-top: 10px">
<label for="" class="col-md-3 control-label"
style="margin-left: 32px;">
操作时间
</label>
<div class="col-md-6" style="margin-top: -38px;margin-left: 80px;width: 360px;">
<input type="text" id="startTime" name="startTime" class="form-control Wdate"
value="${query.startTime }" style="width: 150px;height: 30px;cursor: hand;"
onClick="WdatePicker()" autocomplete="off">
<span>至</span>
<input type="text" id="endTime" name="endTime" class="form-control Wdate"
value="${query.endTime}" style="width: 150px;height: 30px;cursor: hand;"
onClick="WdatePicker()" autocomplete="off">
</div>
</div>
<button type="submit" class="btn btn-primary">查询</button>
<button type="submit" class="btn btn-default" onclick="cle();">重置</button>
</form>
<script type="text/javascript">
/*
* 清除
*/
function cle(){
$("#logsStatus").val("");
$("#logsType").val("");
$("#startTime").val("");
$("#endTime").val("");
}
</script>
后台sql
public List<GoodsEsLog> findAll(GoodsEsQuery goodsEsQuery) {
QueryWrapper<GoodsEsLog> wrapper = new QueryWrapper<GoodsEsLog>();
if (StringUtils.isNotBlank(goodsEsQuery.getLogsFlag())) {
wrapper.eq("logs_flag", goodsEsQuery.getLogsFlag());
}
if (StringUtils.isNotBlank(goodsEsQuery.getLogsMsg())) {
wrapper.eq("logs_msg", goodsEsQuery.getLogsMsg());
}
if (StringUtils.isNotBlank(goodsEsQuery.getLogsStatus())) {
wrapper.eq("logs_status", goodsEsQuery.getLogsStatus());
}
if (StringUtils.isNotBlank(goodsEsQuery.getLogsType())) {
wrapper.eq("logs_type", goodsEsQuery.getLogsType());
}
if (StringUtils.isNotBlank(goodsEsQuery.getParamIds())) {
wrapper.eq("logs_paramIds", goodsEsQuery.getParamIds());
}
if (StringUtils.isNotBlank(goodsEsQuery.getLogsTime())) {
wrapper.eq("date_format(logs_time,'%Y-%m-%d')", goodsEsQuery.getLogsTime());
}
if (StringUtils.isNotBlank(goodsEsQuery.getStartTime())) {
wrapper.ge("date_format(logs_time,'%Y-%m-%d')", goodsEsQuery.getStartTime());
}
if (StringUtils.isNotBlank(goodsEsQuery.getEndTime())) {
wrapper.le("date_format(logs_time,'%Y-%m-%d')", goodsEsQuery.getEndTime());
}
wrapper.orderByDesc("logs_time");
List<GoodsEsLog> goodsEsLogList = goodsEsLogDao.selectList(wrapper);
return goodsEsLogList;
}
附:上传文件配置部分
pom.xml
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
SpringMVC
<!-- 支持文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设定默认编码 -->
<property name="defaultEncoding" value="UTF-8"/>
<!-- 设定文件上传的最大值5MB,5*1024*1024 -->
<property name="maxUploadSize" value="5242880"/>
</bean>
SpringMVC配置多个视图解析器
可以使得多个文件夹下的jsp文件得以访问
<!--配置的视图解析器对象-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/pages/"/>
<property name="suffix" value=".jsp"/>
<property name="order" value="0"></property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/partnerimges/" />
<property name="suffix" value=".jsp" />
<property name="order" value="1"></property>
</bean>