input type=date赋值问题

选取日期后存入数据库,可以从图片中看到已存入日期2016-10-03
,用php也可以读取数据,但是始终显示不出来,一直都是mm/dd/yyyy,这到底是什么问题图片图片

4个回答

显示不出来是什么意思说明白一些。

你要这么改得转换成时间戳吧
echo date('m/d/Y',strtotime($time));s

你直接输出就行了吧 不用做多余的转换

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
<input type="date">如何让后台的Date值赋值上去
问题描述:后台使用SSM框架,返回一个对象, 在JSP中通过<input type="date" name="time" value="${requestScope.LEGEND.time}" id="dateId">希望把日期值直接赋值上去,但是他不会自动赋值上去,该怎么处理啊
JS字符串赋值空值的问题
``` <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String infoId=request.getParameter("InfoId")==null?"":request.getParameter("InfoId"); %> <html> <head> <script type="text/javascript"> function initPage(){ //签单日期 var now = new Date(); var year = now.getFullYear(); var month = now.getMonth(); var day = now.getDate(); var monthStr = parseInt(month); var monthStr = monthStr + 1; if(day<10){ day = '0' + day; } if(monthStr<10){ monthStr = '0' + monthStr; } var billdateStr = year + '-' + monthStr + '-' + day; document.getElementById('billDate').value=billdateStr; //起保日期 now = new Date((now/1000+86400)*1000); year = now.getFullYear(); month = now.getMonth(); day = now.getDate(); monthStr = parseInt(month); monthStr = monthStr + 1; if(day<10){ day = '0' + day; } if(monthStr<10){ monthStr = '0' + monthStr; } var startdateStr = year + '-' + monthStr + '-' + day; document.getElementById('startDate').value=startdateStr; } function doSubmit(){ var reg = /^\d{4}-\d{1,2}-\d{1,2}$/; var billDate = document.getElementById('billDate'); var startDate = document.getElementById('startDate'); var paid = document.getElementById('paid'); var zhekou = document.getElementById('zhekou'); var insurce_flag = document.getElementById('insurce_flag'); var ab = document.getElementById('ab'); var dianxiao = document.getElementById('dianxiao'); var szx = document.getElementById('szx'); var csx = document.getElementById('csx'); var dqx = document.getElementById('dqx'); var csry = document.getElementById('csry'); var vin = document.getElementById('vin'); var model = document.getElementById('model'); if(paid == null || paid.value.length == 0){ alert("请录入保费信息"); return; } if(!reg.test(startDate.value)){ alert("请录入正确的日期格式"); return; } if( szx == null || szx.value.length == 0){ alert("请录入三者险保费信息"); return; } if( vin == null || vin.value.length == 0){ alert("请录入车架号"); return; } if( model == null || model.value.length == 0){ alert("请录入车型"); return; } alert(insurce_flag.value); if(insurce_flag.value == "R"){ insurce_flag.value = '续保'; }else{ insurce_flag.value = '转保'; } alert(insurce_flag.value); var enCodeMsg = "签单时间:" + billDate.value + "★起保时间:" + startDate.value + "★商业险保费:" + paid.value + "★无赔款折扣:" + zhekou.value + "★新转续:" + insurce_flag.value + "★AB类业务类型:" + ab.value + "★渠道:电销★车型:" + model.value + "★本年度三者保额:" + szx.value + "★本年度车损险:" + csx.value + "★本年度盗抢险:" + dqx.value + "★车上人员:" + csry.value + "★车架号:" + vin.value; document.getElementById('enCodeMsg').value=enCodeMsg; document.form1.submit(); } </script> <title>TEST</title> </head> <body onload="initPage();"> <center><table id="table1" width="80%" border='1'> <tr> <td>签单时间</td> <td><input type="text" name="billDate" id='billDate' readonly='ture'></td> </tr> <tr> <td>起保时间</td> <td><input type="text" name="startDate" id='startDate' ></td> </tr> <tr> <td>商业险保费</td> <td><input type="text" name="paid" id='paid' ></td> </tr> <tr> <td>无赔款折扣</td> <td><select name="zhekou" id="zhekou"> <option value="1">出险0次</option> <option value="0">新保</option> <option value="-1">出险1次</option> <option value="-2">出险2次</option> <option value="-3">出险3次</option> <option value="-4">出险4次</option> </select> </td> </tr> <tr> <td>新转续</td> <td><select name="insurce_flag" id="insurce_flag"> <option value="R">续保</option> <option value="T">转保</option> </select> </td> </tr> <tr> <td>AB类业务</td> <td><select name="ab" id="ab"> <option value="A">A</option> <option value="B">B</option> </select> </td> </tr> <tr> <td>渠道</td> <td><select name="dianxiao" id="dianxiao" disabled="disabled"> <option value="dianxiao">电网销</option> </select> </td></td> </tr> <tr> <td>三责保额</td> <td><input type="text" name="szx" id='szx'></td> </tr> <tr> <td>是否承保车损险</td> <td><select name="csx"> <option value="10000">是</option> <option value="0">否</option> </select> </td> </tr> <tr> <td>是否承保盗抢险</td> <td><select name="dqx"> <option value="10000">是</option> <option value="0">否</option> </select> </td> </tr> <tr> <td>车上人员保额</td> <td><select name="csry"> <option value="10000">是</option> <option value="0">否</option> </select> </td> </tr> <tr> <td>车型</td> <td><input type="text" name="model" id='model'></td> </tr> <tr> <td>车架号</td> <td><input type="text" name="vin" id='vin'></td> </tr> <tr> </tr> <tr> </tr> </table> <br> <br> <font size="15" color="red">结果</font><br> <textarea name="a" style="width:600px;height:100px;"></textarea> <br> <form name='form1' action="http://10.36.10.35/cpicjx/crmServices.svr?apicode=000002&type=carReportMessage&type01=requestMoneyRule" method="Post"> <input type="hidden" id="enCodeMsg" name="enCodeMsg"> <input type = "button" value="费用查询" onclick = "doSubmit();">&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input type = "button" value="费用申请" onclick = "doSubmit();"> </form> </center> <!--<form name='form1' action="<%=request.getContextPath() %>/index.jsp" method="Post"> <input type="hidden" id="needAlterInfoId" name="InfoId"> <input type="button" onclick="doSubmit();" value="Submit"> </form> <table id="showAlter" style="display: none"> <tr> <td><font size="2" >您选择的需要修改的记录的ID是:</font> </td> <td><%=infoId %> </td> </tr> </table> --> </body> </html> ``` 可以进入判断,但出来的insurce_flag空值,求助大神解决!
easyui页面显示,就是在主页面显示另一个页面,那个页面没有完整的显示出来,但是在地址栏上输入那个页面的地址,那个页面就完整的显示,这怎么农
使用easyui做的main.jsp和busCarsManager.jsp 在main.jsp点击车辆管理即busCarsManager.jsp,显示成了这样 如下图 ![图片说明](https://img-ask.csdn.net/upload/202003/04/1583329850_48245.png) 在地址栏输入该页面url地址 ![图片说明](https://img-ask.csdn.net/upload/202003/04/1583329898_132483.png) 怎么弄好?? 以下是main.jsp代码 <title>Basic Form - jQuery EasyUI Demo</title> <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css"> <link rel="stylesheet" type="text/css" href="easyui/themes/demo.css"> <script type="text/javascript" src="easyui/jquery.min.js"></script> <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script> <script type="text/javascript"> $(function() { $('#tt').tree({ //点击菜单事件 onClick: function(node){ //如果选项的url为空,null,直接退出,在页面不变 if(node.url==""||node.url==null){ return; } //如果选项卡存在 var flag=$('#tab').tabs('exists',node.text); //存在的条件下,选中,显示其内容 if(flag){ $('#tab').tabs('select',node.text); }else{ $('#tab').tabs('add',{ title: node.text, href:node.url, closable:true }); } } }); }); </script> <title>汽车租赁系统</title> </head> <body class="easyui-layout"> <div data-options="region:'north',split:true" style="height:100px;background: url('images/绿色.jpg')"> <div style="margin-left: 120px;margin-top: 30px;float:left;"> <span style="font-size: 32px;color:orange;font-weight:bold;">汽车租赁系统</span> </div> <div style="float: right ;margin-top: 60px;margin-right: 30px"> <span style="font-size: 18px;color: red;">欢迎admin用户登录</span> <a style="font-size: 18px;color: red;text-decoration: none">注销</a> </div> </div> <div data-options="region:'south',title:'版权信息',split:true" style="height:200px;background: url('images/版权信息.png'); background-repeat: no-repeat;background-color: silver;background-position: center;"></div> <div data-options="region:'east',title:'East',split:true" style="width:200px;"> <div id="date" class="easyui-calendar" style="width:180px;height:200px;"></div> </div> <div data-options="region:'west',title:'West',split:true" style="width:150px;"> <div id="menu" class="easyui-accordion" data-options="fit:true,border:false"> <div title="类别一"> <ul id="tt" class="easyui-tree" url="SysMenusController/findMoreMenus"></ul> </div> <div title="类别二"></div> <div title="类别三"></div> </div> </div> <div data-options="region:'center'" style="background:#eee;"> <div id="tab" class="easyui-tabs" data-options="fit:true"> <div title="默认页"> <img src="images/默认页.jpeg" width="90%" height="90%"> </div> </div> </div> </body> 以下是busCarsManager.jsp代码 <body data-options="fit:true"> <table id="busCarsManger_dg" title="My Cars" class="easyui-datagrid" style="width:600px;height:250px" url="/busCarsController/findAllBusCars" toolbar="#busCarsManger_toolbar" pagination="true" rownumbers="true" fitColumns="true" singleSelect="true"> <thead> <tr> <th field="carnumber" width="50">汽车牌号</th> <th field="lastname" width="50">汽车类型</th> <th field="pice" width="50">汽车价格</th> <th field="description" width="50">汽车描述</th> <th data-options="field:'carimg',formatter:showImage" width="50">汽车图片</th> </tr> </thead> </table> <div id="busCarsManger_toolbar"> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newCars()">新增汽车</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onclick="editCars()">修改汽车信息</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="destroyCars()">移除</a> </div> <div id="busCarsManger_dlg" class="easyui-dialog" style="width:500px" data-options="closed:true,modal:true,border:'thin',buttons:'#busCarsManger_dlg-buttons'"> <form id="busCarsManger_fm" method="post" novalidate style="margin:0;padding:20px 50px"> <h3>汽车信息</h3> <div style="margin-bottom:10px"> <input name="carnumber" class="easyui-textbox" required="true" label="汽车牌号:" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="cartype" class="easyui-textbox" required="true" label="汽车类型:" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="color" class="easyui-textbox" required="true" label="汽车颜色" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="price" class="easyui-textbox" required="true" label="汽车价格" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="rentprice" class="easyui-textbox" required="true" label="汽车租金" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="deposit" class="easyui-textbox" required="true" label="汽车押金" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="description" class="easyui-textbox" required="true" label="汽车描述" style="width:100%"> </div> <input type="text" name="carimg" id="carimg"> </form> <form id="fm2" method="post" enctype="multipart/form-data" style="margin:0;padding:20px 50px"> <div style="margin-bottom:10px"> <input name="fil" class="easyui-filebox" label="汽车图片" style="width:70%"> <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="fileUpload()" style="width:100px">上传图片</a> </div> <span id="sp1"></span> </form> </div> <div id="busCarsManger_dlg-buttons"> <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="saveCars()" style="width:90px">Save</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg').dialog('close')" style="width:90px">Cancel</a> </div> <script type="text/javascript"> //全局参数地址 var url; //删除车辆系信息操作 function destroyCars(){ //当表格信息被选中 var row= $('#busCarsManger_dg').datagrid('getSelected'); if(row){ //提示是否删除 $.messager.confirm("提示","是否删除该车辆信息",function(flag){ if(flag){ //发送Ajax请求,通过控制器执行删除车辆操作 $.post("busCarsController/removeBusCars",{'carnumber':row.carnumber},function(result){ if(result>0){ //删除成功重新加载表格数据 $("#busCarsManger_dg").datagrid("reload"); }else{ $.messager.alert("警告","删除失败","error"); } }) } }) }else //提示请选中至少一行 $.messager.alert("提示","请选中当前信息表的一行数据","info"); } //修改车辆信息 function editCars(){ //当数据表格被选中 var row= $('#busCarsManger_dg').datagrid('getSelected'); if(row){ //执行修改操作,打开修改对话框 $("#busCarsManger_dlg").dialog("open").dialog("center").dialog("setTitle","修改汽车信息") //加载当前选中信息行的数据,在表单一中回显 $("busCarsManger_fm").form("load",row); //表单二中图片的回显,不是用append方法,是因为每次点击修改就会加一个图片,故只用文本显示方法html $("#sp1").html("<img src='images/"+result.url+"'width='80px'/>") //点击保存时,实现修改操作,跳转到当前车辆信息表 url:"busCarsController/changeBusCars"; }else{ $.messager.alert("提示","请选中当前信息表的一行数据","info"); } } //文件上传的操作 function fileUpload(){ //提交form表单 $('#fm2').form('submit',{ url: "busCarsController/fileUpload", success: function(result){ var result=eval('('+result+')'); if(result.url){ //防止在执行修改车辆信息操作,上传图片时,需要清空表单二的图片,防止出现两个图片 $("#sp1").empty(); //显示图片 $("#sp1").append("<img src='images/"+result.url+"'width='80px'/>") //将图片名字赋值给隐藏域 $("#carimg").val("result.url"); }else{ $.messager.alert("提示","图片上传失败","error"); } } }); } //保存车辆信息 function saveCars(){ //获得表单的所有内容 var val =$("busCarsManger_fm").serialize(); $.post(url,val,function(result){ if(result>0){ //关闭当前的对话框 $("#busCarsManger_dlg").dialog("close") //刷新后面的表格 $("#busCarsManger_dg").datagrid("reload"); } }) } 添加车辆信息 function newCars(){ //添加新增对话框信息 $("#busCarsManger_dlg").dialog("open").dialog("center").dialog("setTitle","新增汽车") //清除表单之前的内容 $("busCarsManger_fm").form("clear") //清除图片表单项,要不然下次打开还在 $("#fm2").form("clear") //清除图片显示 $("#sp1").empty(); url="busCarsController/saveBusCars"; } function showImage(val){ return "<img src='images/"+val+"' width='80px'/>"; } </script> </body>
请大神来看看关于JavaScript给text赋值的问题
请大神看看 我想通过JavaScript给text控件赋值当前的日期,但都没有显示出来, 请大神指出问题在哪 代码如下: ``` <script type="text/javascript"> function showdata() { var currentTime = new Date(); var year = currentTime.getFullYear(); var month = currentTime.getMonth(); var day = currentTime.getDate(); var str = year + "." + month + "." + day; document.getElementById("Text1").innerText = str; </script> -------------------------------------------------------------------------------------<tr> <td id="newscell" class="style2" align="center" onmouseover="changebgcolor()" onmouseout="leftmouse()"><a href="Default2.aspx">新闻</a> </td> <td id="hunancell" class="style3" align="center" onmouseout="lefthunancellmouse()" onmouseover="changehunancolor()"><a href="Default.aspx">看湖南</a> </td> <td class="style1"><input type="text" id="Text1" onload="showdata()"/> </td> </tr> -------------------------------------------------------------------------------------- document.getElementById("Text1").innerText = str; 这一句改成 . document.getElementById("Text1").innerHtml= str; document.getElementById("Text1").value= str; 都没有效果 ```
未赋值的session在jsp报错,求大神帮帮忙吧
想要在页面打开是判定一个session会话,这个session要等到跳转到服务器之后才能赋值。 但是明明我设定了判断是否为空,可是还是报错。 这是我的页面和服务器代码: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>请填写上传表单</title> </head> <body> <% Object o = session.getAttribute("Error1"); if(!o.equals(null)||(!"".equals(o))){ String er = (String)o; %> 操作失败,<%=er %> <% } %> <form action="UploadServlet" method="post"> 关键字:<input type="text" name="keyw"><br/> 简要描述(10个字,可以不写):<input type="text" name="remark"><br/> 文章照片:<input type="file" name="art"/><br/> <input type="submit" value="上传"> <input type="reset" value="重置"/> </form> <input type ="button" value="返回" onclick="location.href='main.jsp'"> </body> </html> package com.hcpolic.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.hcpolic.entity.Artical; import com.hcpolic.entity.User; import com.hcpolic.rbac.Opreator; import com.hcpolic.rbac.Permission; import com.hcpolic.util.Tools; import org.apache.commons.fileupload.disk.*; import org.apache.commons.fileupload.servlet.*; import org.apache.commons.fileupload.*; public class UploadServlet extends HttpServlet { /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); HttpSession session=request.getSession(); User us = (User)request.getSession().getAttribute("user"); String rem = (String)request.getAttribute("remark"); String key = (String)request.getAttribute("keyw"); String er = null; Tools t = new Tools(); ////////////////////////////////保存上传文件至指定文件夹 String savePath = "D:/upload/"; DiskFileItemFactory fac = new DiskFileItemFactory(); fac.setRepository(new File(savePath+"uploadtemp")); ServletFileUpload upload = new ServletFileUpload(fac); upload.setFileSizeMax(1048576); try { List<FileItem> it = upload.parseRequest(request); Iterator<FileItem> iter = it.iterator(); while(iter.hasNext()){ FileItem item = iter.next(); String fieldName = item.getFieldName(); if(!item.isFormField()){ File saveFile = null; InputStream input = null; OutputStream output = null; savePath = savePath + File.separator+String.valueOf(t.randomId(9,6))+"."+item.getName().split("\\.")[1]; input = item.getInputStream(); output = new FileOutputStream(new File(savePath)); byte data[] = new byte[512]; int temp = 0; while((temp = input.read(data,0,512))!=-1){ output.write(data); } input.close(); output.close(); } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } //////////////////////////////// ///////////////////////////////抓取系统时间 String strDate = null; SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); strDate = sf.format(new Date()); /////////////////////////////// Artical a = new Artical(); Permission per = new Permission(); Opreator o = new Opreator(); a.setId(us.getId().substring(4, 10)+String.valueOf(t.randomId(9,6))); a.setKeyWords(key.trim()); a.setRemark(rem); a.setImagePath(savePath); a.setUpdateTime(strDate.trim()); boolean ret = o.isAdd(a, us); if(ret){ response.sendRedirect("main.jsp"); }else{ er = "您的权限不够!!"; session.setAttribute("Error1", er); response.sendRedirect("Upload.jsp"); } } }
如何获取同一个form表单里的对象的value值呢
``` <input type="hidden" id="district<%=i%>" name="district" > <script> document.getElementById("district"+i).value=document.getElementById("shuru"+i).value </script> ``` 如题,我想将hidden里的value 设置为上面id为shuru的的值 ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="Db.Db"%> <%@page import="java.text.SimpleDateFormat"%> <%@ page import="java.sql.*"%> <%@ page import="java.util.Date"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!-- 修改前--> <% request.setCharacterEncoding("utf-8"); String uaddr = null; int uid = 0; String uname = request.getParameter("uname"); String[] strgid = request.getParameterValues("addOrders"); Connection conn = null; Statement stmt = null; Statement stmt1 = null; ResultSet rs = null; ResultSet rs1 = null; conn = Db.getconn(); stmt = conn.createStatement(); stmt1 = conn.createStatement(); System.out.println(uname); rs1 = stmt1.executeQuery("select * from user where uname = '"+ uname + "' "); if (rs1.next()) { uaddr = rs1.getString("uaddr"); uid = rs1.getInt("uid"); } %> <% SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String nowTime = sdf.format(new Date()); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>购物车</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <form method="post" action="servlet/AddOrdersServlet" name="numSender"> <input type="hidden" name="uid" value="<%=uid%>"> <input type="hidden" name="uname" value="<%=uname%>"> <input type="hidden" name="oaddr" value="<%=uaddr%>"> <input type="hidden" name="dealtime" value="<%=nowTime%>"> <!-----script放到循环外-------> <script type="text/javascript"> function jianC(i,p1) { /*定义变量K,用商品数量输入框里面的数字赋值*/ var k =document.getElementById("shuru"+i);//获取数量输入控件 var v=parseInt(k.value,10); v--; /*点击-号按钮会递减商品价格*/ if (v < 1) { alert("亲,商品数量不能小于1!"); return//超限退出 } k.value=v; k.setAttribute('sum',v*p1)//将这个物品的小计放到自定义属性sum中,方便计算总价 setTotal()//重新设置总价钱 } function adddC(i,p1) { /*点击+号按钮会递加商品数量*/ var k =document.getElementById("shuru"+i);//获取数量输入控件 var v=parseInt(k.value,10); v++; if (v > 99) { alert("您所选择的数量已经到达库存上限!"); return//超限退出 } k.value=v; k.setAttribute('sum',v*p1)//将这个物品的小计放到自定义属性sum中,方便计算总价 setTotal()//重新设置总价钱 } function setTotal(){//设置总价 var o=document.getElementsByName('init_num');//获取数量输入框 var sum=0; for(var i=0;i<o.length;i++)sum+=parseInt(o[i].getAttribute('sum')||0) document.getElementById("cost").value = sum + "元" } function sendNum() { alert("xxxxxx"); document.getElementById("district"+i).value=document.getElementById("shuru"+i).value; alert("aaaaaaaaaaa"); } </script> <table border=1 align="center"> <tr> <td colspan="4" align="center">购物车</td> </tr> <tr> <td align="center">商品</td> <td align="center">数量</td> <td align="center" colspan="1">操作</td> </tr> <% for (int i = 0; i < strgid.length; i++) { int gid = Integer.parseInt(strgid[i]); rs = stmt.executeQuery("select * from goods where gid =" + gid); if (rs.next()) { String strgprice = rs.getString("gprice"); Double p =Double.parseDouble(strgprice); // System.out.println("p="+p); %> <!-- ss --> <tr> <td><img src="<%=rs.getString("gpicture")%>">&nbsp;<%=rs.getString("gname")%></td> <td><input type="button" id="jian" onClick="jianC(<%=i%>,<%=p%>)" value="-"><!-----传入循环i和单价-------> <input id="shuru<%=i%>" name="init_num" class="input_text" type="text" value="0" size="3"><!-----id连接上i变为唯一-------> <input type="hidden" id="district<%=i%>" name="district" > <script> document.getElementById("district"+i).value=document.getElementById("shuru"+i).value </script> <input type="button" id="addd" onClick="adddC(<%=i%>,<%=p%>)" value="+"><!-----传入循环i和单价-------></td> <td> <input type="checkbox" name="gid" value="<%=gid %>"> </td> </tr> <% } } rs.close(); rs1.close(); stmt.close(); stmt1.close(); conn.close(); %> <tr> <td colspan="4" align="center"> 总价:<input id="cost" class="input_text" type="text" value="0" size="3" value="0"></td> </tr> <tr> <td colspan="5" align="center"> <button id="buy_anniu" type="submit" onClick="sendNum()">提交</button> <button type="reset">重置</button> </td> </tr> </table> </form> </body> </html> ```
为什么我的这段代码只有第一行显示点击后的结果
为什么我的这段代码只有第一行显示点击后的结果,点击其他行的+ 或者 - 数量和价格也都在第一行变化 还有用循环从数据库得到的gprice(商品价格) 当 选择多个商品加入购物车时,价格都变成最后选中的那个商品的价格?为什么没有得到各自的价格? 这是购物车的代码 上张效果图,点击第二行效果也都显示在第一行 ![图片说明](https://img-ask.csdn.net/upload/201501/10/1420894243_360786.jpg) ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="Db.Db"%> <%@page import="java.text.SimpleDateFormat"%> <%@ page import="java.sql.*"%> <%@ page import="java.util.Date"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <% request.setCharacterEncoding("utf-8"); String uaddr = null; int uid = 0; String uname = request.getParameter("uname"); String[] strgid = request.getParameterValues("addOrders"); Connection conn = null; Statement stmt = null; Statement stmt1 = null; ResultSet rs = null; ResultSet rs1 = null; conn = Db.getconn(); stmt = conn.createStatement(); stmt1 = conn.createStatement(); System.out.println(uname); rs1 = stmt1.executeQuery("select * from user where uname = '"+ uname + "' "); if (rs1.next()) { uaddr = rs1.getString("uaddr"); uid = rs1.getInt("uid"); } %> <% SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String nowTime = sdf.format(new Date()); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>购物车</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <form method="post" action="servlet/AddOrdersServlet" name="numSender"> <input type="hidden" name="uid" value="<%=uid%>"> <input type="hidden" name="uname" value="<%=uname%>"> <input type="hidden" name="oaddr" value="<%=uaddr%>"> <input type="hidden" name="dealtime" value="<%=nowTime%>"> <table border=1 align="center"> <tr> <td colspan="4" align="center">购物车</td> </tr> <tr> <td align="center">商品</td> <td align="center">数量</td> <td align="center" colspan="1">操作</td> </tr> <% for (int i = 0; i < strgid.length; i++) { int gid = Integer.parseInt(strgid[i]); rs = stmt.executeQuery("select * from goods where gid =" + gid); if (rs.next()) { String strgprice = rs.getString("gprice"); Double p =Double.parseDouble(strgprice); // System.out.println("p="+p); %> <script type="text/javascript"> function jianC() { var p1 = <%=p%>; /*定义变量K,用商品数量输入框里面的数字赋值*/ var k = document.getElementById("shuru").value; /*点击-号按钮会递减商品数量*/ document.getElementById("shuru").value--; /*点击-号按钮会递减商品价格*/ document.getElementById("cost").value = k * p1 - p1 + "元" if (k <= 1) { alert("亲,商品数量不能小于1!"); shuru.value = 1; } if (k <= 99) p1.innerHTML = ""; } function adddC() { var p1 = <%=p%>; /*点击+号按钮会递加商品数量*/ var f = document.getElementById("shuru").value; document.getElementById("shuru").value++; /*点击+号按钮会递加商品价格*/ document.getElementById("cost").value = f * p1 + p1 + "元"; if (f >= 99) { alert("您所选择的数量已经到达库存上限!"); shuru.value = 99; p1.style.color = "red"; p1.innerHTML = "<p><strong>所选数量已经到达上限!</strong></p>"; } else { document.getElementById("shuru").value + 1; } } function ok() { document.getElementById("district").value=document.numSender.init_num.value ; } </script> <!-- ss --> <tr> <td><img src="<%=rs.getString("gpicture")%>">&nbsp;<%=rs.getString("gname")%></td> <td><input type="button" id="jian" onClick="jianC()" value="-"> <input id="shuru" name="init_num" class="input_text" type="text" value="0" size="3"> <input type="hidden" id="district" name="district" value="" > <input type="button" id="addd" onClick="adddC()" value="+"></td> <td> <input type="checkbox" name="gid" value="<%=gid %>"> </td> </tr> <% } } rs.close(); rs1.close(); stmt.close(); stmt1.close(); conn.close(); %> <tr> <td colspan="4" align="center"> 总价:<input id="cost" class="input_text" type="text" value="0" size="3" value="0"></td> </tr> <tr> <td colspan="5" align="center"> <button id="buy_anniu" type="submit">提交</button> <button type="reset">重置</button> </td> </tr> </table> </form> </body> </html> ```
关于一个jsp页面开始结束时间的问题
现在只能实现选好开始时间之后,点击空白处赋值给结束时间并且小时+3,我想要的效果是选好开始时间之后结束时间马上进行赋值同时小时+3. 代码如下,求指导: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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> <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.6.min.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/js/My97DatePicker/WdatePicker.js"></script> <script type="text/javascript"> //时间格式化 Date.prototype.format = function(format){ /* * eg:format="yyyy-MM-dd hh:mm:ss"; */ if(!format){ format = "yyyy-MM-dd hh:mm:ss"; } var o = { "M+": this.getMonth() + 1, // month "d+": this.getDate(), // day "h+": this.getHours(), // hour "m+": this.getMinutes(), // minute "s+": this.getSeconds(), // second "q+": Math.floor((this.getMonth() + 3) / 3), //quarter "S": this.getMilliseconds() // millisecond }; if (/(y+)/.test(format)) { format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" +o[k]).length)); } } return format; }; function addHours(startTime){ var start=new Date(startTime.replace("-", "/").replace("-", "/")); start.setHours(start.getHours()+3); $("#endTime").val(start.format("yyyy-MM-dd hh:mm:ss")); } </script> </head> <body> <tr> <td class="category"> 开始时间: </td> <td> <input id="startTime" name="startTime" type="text" onClick="WdatePicker({startDate:'当前时间',dateFmt:'yyyy-MM-dd HH:mm:ss'})" onchange="addHours(this.value)"/> <font color="#FF0000">*</font> </td> <td class="category"> 结束时间: </td> <td> <input id="endTime" name="endTime" type="text" onClick="WdatePicker({startDate:'当前时间',dateFmt:'yyyy-MM-dd HH:mm:ss'})"/> <font color="#FF0000">*</font> </td> </tr> </body> </html>
使用layui的富文本编辑器 上传图片后不能显示图片 只能显示图片名
![图片说明](https://img-ask.csdn.net/upload/201903/23/1553320913_930043.png)![图片说明](https://img-ask.csdn.net/upload/201903/23/1553320929_255574.png) <div class="layui-form-item layui-form-text"> <label class="layui-form-label">历史</label> <div class="layui-input-block"> <textarea id="history" name="article_desc" lay-verify="article_desc" placeholder="" class="layui-textarea">请输入历史</textarea> </div> <input type="hidden" id="introCont"> </div> ``` <!--编辑器--> <script> layui.use(['layedit','form'], function(){ var layedit = layui.layedit,$ = layui.jquery,form = layui.form; //构建一个默认的编辑器 layedit.set({ uploadImage: { url: '/File/uploadImg', type: 'post' } }); var index = layedit.build('history',{tool: [ 'strong' //加粗 ,'italic' //斜体 ,'underline' //下划线 ,'del' //删除线 ,'|' //分割线 ,'left' //左对齐 ,'center' //居中对齐 ,'right' //右对齐 ,'link' //超链接 ,'unlink' //清除链接 ,'face' //表情 ,'image' //插入图片 // ,'help' //帮助 ]}); //自定义验证规则 form.verify({ history: function(value){ if(value.length < 0){ return '历史不能为空'; } } ,article_desc: function(value){ layedit.sync(index); } }); //编辑器外部操作 var active = { content: function(){ //alert(layedit.getContent(index)); //获取编辑器内容 var str = layedit.getContent(index); //赋值到隐藏的标签 $("#introduce").val(""+ str +""); //console.log("视频简介内容:"+ $("#introCont").val()) } }; $('.layui-textarea').on('click', function(){ var type = $(this).data('type'); active[type] ? active[type].call(this) : ''; }); }); </script> ``` package com.yunce.web.controller; import com.yunce.web.Setting; import com.yunce.web.utils.FileUpload; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * Created by Administrator on 2019/3/22. */ @Controller @RequestMapping(value = "/File") public class FileController { public static Logger LOG = LoggerFactory.getLogger(FileController.class); @Autowired private Setting setting; @RequestMapping(value = "/uploadImg", method = RequestMethod.POST) @ResponseBody public Map<String, Object> uploadImg(@RequestParam (value = "file")MultipartFile[] files, HttpServletRequest request) { String url = setting.local_url; String saveFilePath = setting.image_dir; Map<String, Object> map = new HashMap<>(); Map<String, Object> data = new HashMap<>(); for (int i = 0, length = files.length; i < length; i++) { if (files[i] != null && !files[i].isEmpty()) { LOG.info("图片大小:" + files[i].getSize() / 1024 + "KB"); //获取图片的文件名 String fileName = files[i].getOriginalFilename(); //获取图片的扩展名 String extensionName = fileName.substring(fileName.lastIndexOf(".") + 1); //新的图片文件名 = 年月日+随机数 +"."图片扩展名 String dateStr = new SimpleDateFormat("yyyyMMdd").format(new Date()); Integer num = (int) ((Math.random() * 9 + 1) * 100000); String newFileName = String.valueOf(dateStr + num) + "." + extensionName; FileUpload.saveFile(newFileName, files[i], saveFilePath); url = url + "/" + newFileName; data.put("src", url); data.put("title", newFileName); map.put("code", 0); map.put("msg", "上传成功"); map.put("data", data); } } return map; } } /* String tempPath="f:/upload"; Map<String,Object> map=new HashMap<>(); Map<String,Object> data=new HashMap<>(); String oldName=file.getOriginalFilename(); System.out.println("图片名字:oldName is:"+oldName); String tempName = System.currentTimeMillis() + ""; System.out.println("tempName is:" +tempName); //以文件名命名的文件夹 String tempFileDir = tempPath + "/" + tempName; File parentFileDir = new File(tempFileDir); //若不存在 就新建 if (!parentFileDir.exists()) { parentFileDir.mkdirs(); } //新文件名 获取当前名+文件后缀 String newName = tempName + oldName.substring(oldName.lastIndexOf(".")); //数据库img的src String src="/upload/"+tempName+"/"+newName; System.out.println("图片名字:newName is:"+newName); try { //存放文件 (文件名,文件) file.transferTo(new File(tempFileDir,newName)); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }*/ ``` ```
JSp+ajax用户登录验证
[img]http://dl2.iteye.com/upload/attachment/0088/2001/4ee085e5-47e0-3995-ad42-62e4a53cfc2f.png[/img] 用户登陆界面,想要实现输入账号之后离开输入框就验证该账号是否存在,输入角色、账号、密码之后,点击登录,如果正确就跳转到index.jsp,错误不跳转并且在密码输入框下显示提示信息;有一个没输入就提示,信息也是在密码输入框下。 我现在的问题是:若果什么也不输,点击登录,会闪一下,但闪过之后就是重置了页面。输入正确也是闪一下就重置页面.账号验证没问题,就是登录有问题,但是搞不定,大侠们看看吧! login.jsp [code="java"]<form id="form" name="form" method="post" action="" > <table border="0"> <tr> <td align="right">角色类型:</td> <td><select name="role" id="role" onBlur="checkRole(this)"> <option value="0">-请选择角色-</option> <% List<Role> list = new ArrayList<Role>(); RoleDao dao = new RoleDaoImpl(); list = dao.findAllRoles();//调用实现类的查询全部方法 for (int i = 0; i < list.size(); i++) { Role r = list.get(i); %> <option value="<%=r.getR_id()%>"><%=r.getR_name()%></option> <% } %> </select> </td> <td align="left"> &nbsp; <span id="roleSpan"></span> </td> </tr> <tr> <td align="right">账号:</td> <td> <input type="text" name="number" id="number" onblur="checkNumber(this)"> </td> <td width="256" align="left"> &nbsp; <span id="numberSpan"></span> </td> </tr><!-- 当输入名字后离开输入框即调用--> <tr> <td align="right">密码:</td> <td><input type="password" name="pwd" id="pwd" onBlur="checkPsw(this)" > </td> <td align="left"> &nbsp; <span id="pwdSpan"></span> </td> </tr> <tr> <td align="left">&nbsp;<span id="feedback_info"></span></td> </tr> <tr> <td colspan="1"> <input type="submit" value="登录" onclick="checkLogin(this.form)"/> <input type="button" value="注册" onclick="javascript:window.location.href='User/Register.jsp'"></td> </tr> </table> </form>[/code] login.js [code="java"]var xmlHttp; function createXMLHttpRequest() { if (window.XMLHttpRequest) { var xmlHttp = new XMLHttpRequest(); //mozilla浏览器 } else if (window.ActiveXObject) { try { var xmlHttp = new ActiveX0bject("Msxml2.XMLHTTP"); //IE老版本 } catch (e) { } try { var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE新版本 } catch (e) { } } if (!xmlHttp) { window.alert("不能创建XMLHttpRequest对象实例"); return false; } else return xmlHttp; ////}///////花括号放错地方 } // 检查账号,给出提示信息 function checkNumber(Number) { var numberSpan = document.getElementById("numberSpan"); if (Number.value == "") { numberSpan.innerHTML = "账号必须填写".fontcolor("red"); return false; } else { xmlHttp = createXMLHttpRequest(); //createXMLHttpRequest申明的是局部变量,这里访问不到xmlHttp,要给xmlHttp变量赋值才行 var url="servlet/CheckNumberServlet?number="+Number.value+"&LoginTime="+new Date().getTime(); url = encodeURI(url); //转换码后再传输 xmlHttp.open("GET",url,true);//加时间戳防止IE缓存 //xmlhttp.setRequestHeader( "Content-Type", "text/html;charset=UTF-8" ); xmlHttp.onreadystatechange = handleStateChange1; xmlHttp.send(null); return true; } } function handleStateChange1() { var numberSpan = document.getElementById("numberSpan"); if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { // alert("来自服务器的响应:"+xmlHttp.responseText); if (xmlHttp.responseText == 'true') {///////responseText是字符串,不能和boolean变量直接比较 // alert("存在"); numberSpan.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } else if (xmlHttp.responseText == 'false') {///////responseText是字符串,不能和boolean变量直接比较 // alert("不存在"); numberSpan.innerHTML = "账号不存在".fontcolor("red"); return false; } } else alert("服务器端错误"); } } // 检查密码,给出提示信息 function checkPsw(pswNode) { var spanNode1 = document.getElementById("pswSpan"); var Role= document.getElementById("role"); var Number= document.getElementById("number"); if (pswNode.value == "") { spanNode1.innerHTML = "密码必须填写".fontcolor("red"); return false; } else { pwdSpan.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } } // 检查是否选中角色 function checkRole(selNode) { var index = selNode.selectedIndex;// 获得选中下标 var spanNode1 = document.getElementById("roleSpan"); if (index <= 0) { spanNode1.innerHTML = "必须选择角色".fontcolor("red"); return false; } else { spanNode1.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } } // 检查表单 function checkLogin(o) { var Role=o.role; var Number= o.number; var Pwd= o.pwd; if(checkNumber(Number)&&checkPsw(Psw) &&checkRole(Role)) { xmlHttp = createXMLHttpRequest(); //createXMLHttpRequest申明的是局部变量,这里访问不到xmlHttp,要给xmlHttp变量赋值才行 var url="servlet/CheckLoginServlet?number="+Number.value+"&role="+Role.value+"&pwd="+Pwd.value+"&LoginTime="+new Date().getTime(); url = encodeURI(url); //转换码后再传输 xmlHttp.open("GET",url,true);//加时间戳防止IE缓存 //xmlhttp.setRequestHeader( "Content-Type", "text/html;charset=UTF-8" ); xmlHttp.onreadystatechange = handleStateChange2; xmlHttp.send(null); return true; } else{ document.getElementById("feedback_info").innerHTML="请填写每一项".fontcolor("red"); return false; } } function handleStateChange2() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { //alert("来自服务器的响应:" + xmlHttp.responseText); if(xmlHttp.responseText == '0'){ document.getElementById("feedback_info").innerHTML="账号与密码不匹配".fontcolor("red"); return false; } else if(xmlHttp.responseText == '1'){ document.getElementById("feedback_info").innerHTML=""; window.location.href="index.jsp"; return true; } } else alert("服务器端错误"); } }[/code] chuckLoginservlet [code="java"]public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); doPost(request, response);// 调用doPost方法 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); String number=""; try { number = new String(request.getParameter("number").getBytes( "ISO-8859-1"), "UTF-8"); } catch (Exception e1) { System.out.println("number为空"); } String role="0"; int rID=0; try { role = new String(request.getParameter("role").getBytes( "ISO-8859-1"), "UTF-8"); rID=Integer.parseInt(role);//把获得的role的值转成整型 } catch (Exception e1) { System.out.println(request.getParameter("role")+"******role"); } String pwd=""; try { pwd = new String(request.getParameter("pwd").getBytes( "ISO-8859-1"), "UTF-8"); } catch (Exception e) { System.out.println(request.getParameter("pwd")+"****pwd"); } // String txt = new String(number.getBytes("ISO-8859-1"), "UTF-8"); // System.out.println(txt+"********"); PrintWriter out = response.getWriter(); User u = new User(); UserDao ud = new UserDaoImpl(); u = ud.findUserByNumber(number);//通过账号找到用户对象 if (u != null) {// 找到该用户 int u_id = u.getU_id();// 获得该用户的ID UserRole ur = new UserRole(); UserRoleDao urd = new UserRoleDaoImpl(); ur = urd.findUserRoleByUserId(u_id);// 找到中间表UserRole的记录 int r_id = ur.getRole().getR_id();// 由Userrole表找到Role表的相对应角色名称 if (r_id==rID && u.getU_password().equals(pwd))// 如果数据中的角色和密码与之对应 { out.write("1");//1表示验证通过 } else { out.write("0");//0表示密码与账号不匹配 } } out.flush(); out.close(); }[/code]
预加载的时候,拼接到盒子中,点击的时候不在拼接,或者点击的时候拼接,再次点击不拼接
``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>预加载测试</title> <style type="text/css"> *{margin: 0;padding: 0;} .register{width: 200px;height: 200px;margin: 50px auto 0;} .register input{width: 116px;margin-top:30px ;margin-left: 20px;} .registerBtn{width: 200px;margin: 0 auto;margin-top: 20px;} #WaitPage{display: none; margin: 0 auto;width: 300px;height: 300px;} #WaitPage img{width: 300px;height: 250px;margin: 25px 0px 0;display: inline-block;} .page{width: 500px;height: 300px;border: 1px solid black;margin: 0 auto;display: none;} .page img{width: 90px;height: 80px;float: left; margin:5px 15px;} .abtn{display: none;width: 40px;height: 20px;margin:30px 50px 30px 90px; float: left;} </style> </head> <body> <div class="box"> <!-- 登录页面 --> <div class="register" id="register"> <span>账号</span><input type="text" /><br> <span>密码</span><input type="password" /><br> <button class="registerBtn" id="registerBtn">登录</button> </div> <!-- 等待页面 --> <div id="WaitPage"> <img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1502705710958&di=150996093863b2d1a7253ecd096f9a7e&imgtype=0&src=http%3A%2F%2Fimg.qqzhi.com%2Fupload%2Fimg_5_1629951827D4010606170_21.jpg" > </div> <button class="abtn" id="btn1">Btn1</button> <button class="abtn" id="btn2">Btn2</button> <button class="abtn" id="btn3">Btn3</button> <button class="abtn" id="btn4">Btn4</button> <div style="clear: both;"></div> <!-- 页面 --> <div id="page1" class="page"></div> <div id="page2" class="page"></div> <div id="page3" class="page"></div> <div id="page4" class="page"></div> </div> </body> </html> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script type="text/javascript"> function imgloading(arr, idName, callback) { // 需要一个盛放图片的 盒子 var box = document.getElementById(idName); // 需要一个index值,做判断使用 var index = 0; // 用于承载创建的图片对象 var imgObjs = []; // 循环创建对象,并实现预加载 for(var i = 0; i < arr.length; i++) { // 创建图片对象 var imgObj = new Image(); imgObj.onload = function() { // 这个 index 可以获取到当前的length值 index++; // 将加载好的图片添加到数组中 imgObjs.push(this); // 调用加载进度方法,传当前的index的值 loadingProgress(index); } // 赋值数据源 imgObj.src = arr[i]; } // 加载进度 function loadingProgress(index) { // console.log(indexary); // 判断 if(index == arr.length) { // 如果index的值等同于数组长度,代表加载完毕 console.log(new Date()); callback(box, imgObjs); } } } var arr1 = ["http://weitu-650-water.bj.bcebos.com/233108469581.jpg@!water", "http://weitu-650-water.bj.bcebos.com/233108489667.jpg@!water", "http://weitu-650-water.bj.bcebos.com/233108735591.jpg@!water", "http://pic1.cxtuku.com/00/01/53/b0105f29cd15.jpg", "http://pic1.cxtuku.com/00/01/53/b0105f29cd15.jpg", "http://pic1.cxtuku.com/00/01/53/b0105f29cd15.jpg", "http://pic1.win4000.com/wallpaper/b/535f45c518b60.jpg", "http://img05.tooopen.com/images/20150701/tooopen_sy_132481769552.jpg", "http://pic25.nipic.com/20121206/7447430_133820812000_2.jpg", "http://f1.bj.anqu.com/down/OTkwNw==/allimg/1208/48-120R0153P9.jpg"]; var arr3 = ["http://pic.58pic.com/58pic/15/16/53/22458PIC7Xb_1024.jpg", "http://bizhi.zhuoku.com/2009/08/30/jingxuan/zhuoku018.jpg", "http://p1.yokacdn.com/pic/marry/look/2013/U395P1T117D789562F2577DT20130603133456_maxw808.jpg", "http://s1.dwstatic.com/group1/M00/87/42/bcc79336ab5f1a6bdf9c5f04e13e57cb.jpg", "http://s1.dwstatic.com/group1/M00/86/05/9f57d91b35148abbb43392e5a0a5c497.jpg", "http://gaopin-preview.bj.bcebos.com/133100460090.jpg@!420", "http://gaopin-preview.bj.bcebos.com/133100460089.jpg@!420", 'http://gaopin-preview.bj.bcebos.com/133200138213.jpg@!420'] var arr2 = ["http://t2.27270.com/uploads/tu/201708/15/6cc1680862_1.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1501843806342&di=0458a3c86b8b894f7fc432518cf23dab&imgtype=0&src=http%3A%2F%2Fd.5857.com%2Fkgzwcyx_130522%2F006.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1501843806873&di=b5ec72f343b9fee1be0824c868a32cc0&imgtype=0&src=http%3A%2F%2Fcdn.duitang.com%2Fuploads%2Fitem%2F201411%2F06%2F20141106215740_5KwPY.jpeg", "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1870718407,653952476&fm=26&gp=0.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1501843828446&di=6f878eeb6d95a8a078dcbcc84b1b0359&imgtype=0&src=http%3A%2F%2Fimg17.3lian.com%2Fd%2Ffile%2F201702%2F18%2Ff893c72914daab9327ebef41d8924a99.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1501843828443&di=5b4a417e25774f847ed8422051afb78e&imgtype=0&src=http%3A%2F%2Fwww.bz55.com%2Fuploads%2Fallimg%2F170214%2F140-1F214094P2.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1501843853165&di=2b0aaff0f2647f2b828e6cc9ae541cf3&imgtype=0&src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F5%2F582ac82b6f6e0.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1501843853704&di=4391aa0c8c78c489b5d4354c1b4979c9&imgtype=0&src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F1%2F546ae76e9eced.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1501843853703&di=499f89710e72a47bd49df9d12d0837dd&imgtype=0&src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F4%2F56e3c5979c62e.jpg"] var arr4 = ["http://n.sinaimg.cn/news/20170804/MIUr-fyitapv7529224.jpg", "http://img01.sogoucdn.com/app/a/100540002/492265.jpg", "http://inews.gtimg.com/newsapp_match/0/1750701037/0", "http://img1.gtimg.com/zj/pics/hv1/9/153/2229/144979749.jpg", "http://p1.wmpic.me/article/2017/07/03/1499059680_WzCipcoE.jpg", "http://t2.27270.com/uploads/tu/201707/9999/78e130b360.jpg", "http://t2.27270.com/uploads/tu/201707/9999/848c20876f.jpg", "http://t2.27270.com/uploads/tu/201707/5820/56.jpg", "http://t2.27270.com/uploads/tu/201707/571/31.jpg", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1502439836&di=6bc1ded09d70cd90b124fb2e64b54daa&imgtype=jpg&er=1&src=http%3A%2F%2Fa2.att.hudong.com%2F12%2F06%2F01300337734975132668063106926.jpg"] function loadingOver(id, imgObjs) { $(id).css("display", "block"); // 需要更改的地方 for(var i = 0; i < imgObjs.length; i++) { id.appendChild(imgObjs[i]); } $("#WaitPage").css("display", "none"); $(".abtn").css("display", "block"); setTimeout(function(){ imgloading(arr2,"page2",loadingOver1); imgloading(arr3,"page3",loadingOver1); imgloading(arr4,"page4",loadingOver1); },2000) } function loadingOver1(id, imgObjs, indexary) { // 需要更待的地方 for(var i = 0; i < imgObjs.length; i++) { id.appendChild(imgObjs[i]); } } $("#registerBtn").click(function() { $(".register").css("display", "none"); $("#WaitPage").css("display", "block"); imgloading(arr1, "page1", loadingOver); }) $("#btn1").click(function() { $("#page1").css("display", "block"); $("#page2").css("display", "none"); $("#page3").css("display", "none"); $("#page4").css("display", "none"); imgloading(arr1, "page1", loadingOver); }) $("#btn2").click(function() { $("#page1").css("display", "none"); $("#page2").css("display", "block"); $("#page3").css("display", "none"); $("#page4").css("display", "none"); imgloading(arr2, "page2", loadingOver1); }) $("#btn3").click(function() { $("#page1").css("display", "none"); $("#page2").css("display", "none"); $("#page3").css("display", "block"); $("#page4").css("display", "none"); imgloading(arr3, "page3", loadingOver1); }) $("#btn4").click(function() { $("#page1").css("display", "none"); $("#page2").css("display", "none"); $("#page3").css("display", "none"); $("#page4").css("display", "block"); imgloading(arr4, "page4", loadingOver1); })</script> ``` 预加载的时候,拼接到盒子中,点击Button的时候不在拼接 或者点击的时候拼接,再次点击不拼接。 现在就是多次点击多次拼接,该咋整呢?
哪位帮忙分析下我的SSH小工程,非常感谢
WEB-INF/applicationContext.xml [code="java"]<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="dataSource" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db?useUnicode=true&amp;characterEncoding=UTF-8"/> <property name="user" value="root" /> <property name="password" value="root" /> <property name="maxPoolSize" value="50" /> <property name="minPoolSize" value="1" /> <property name="initialPoolSize" value="1" /> <property name="maxStatements" value="0"/> <property name="maxIdleTime" value="20" /> </bean> <bean id="sessionFactory" name="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mappingResources"> <list> <value>model/User.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.use_sql_comments">false</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.jdbc.batch_size">20</prop> </props> </property> </bean> <bean id="transactionManager" name="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <bean id="transactionInterceptor" name="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager" ref="transactionManager" /> <property name="transactionAttributes"> <props> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean id="BeanNameAutoProxyCreator" name="BeanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>mgr</value> </list> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean> <bean id="mgr" name="mgr" class="service.UserManagerImpl"> <property name="userDAO" ref="userDAO" /> </bean> <bean id="userDAO" name="userDAO" class="dao.user.UserDAOHibernate"> <property name="sessionFactory" ref="sessionFactory" /> </bean> </beans>[/code] WEB-INF/web.xml [code="java"] <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <!-- 用于初始化Spring容器的Listener --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true </param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>openSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>struts-cleanup</filter-name> <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> [/code] model.User.java [code="java"]package model; public class User { private int Id; private String username; private String password; public int getId() { return Id; } public void setId(int id) { Id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }[/code] model/User.hdm.xml [code="java"]<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping default-access="field" package="model"> <class name="User" table="admin"> <id name="Id" column="Id"> <generator class="identity" /> </id> <property name="username" column="username" not-null="true" generated="never" lazy="false" unique="true"/> <property name="password" column="password" not-null="true" generated="never" lazy="false" /> </class> </hibernate-mapping> [/code] login.jsp [code="java"]<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <%@taglib prefix="sx" uri="/struts-dojo-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <script type="text/javascript"> function refresh() { document.getElementById("authImg").src = "authImg?d=" + new Date().getTime(); } </script> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <sx:head/> <title><s:text name="%{getText('loginPage')}" /></title> </head> <body> <div style="color: red"> <s:actionerror/> </div> <s:form action="Login" method="post" name="form" onsubmit="return validate(document.form)"> <s:textfield label="%{getText('username')}" name="username" value="" cssStyle="width:150px;" /> <s:password label="%{getText('password')}" name="password" value="" cssStyle="width:150px;" /> <s:textfield label="%{getText('vercode')}" name="vercode" value="" cssStyle="width:150px;" /> <s:submit value="%{getText('login')}"/> </s:form> 验证码如图:<img src="authImg" id="authImg"/>看不清?<a href="#" onClick="refresh()">单击此处刷新</a> </body> </html>[/code] action.LoginAction.java [code="java"]package action; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; public class LoginAction extends BaseAction { private static final long serialVersionUID = 1L; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getVercode() { return vercode; } public void setVercode(String vercode) { this.vercode = vercode; } @SuppressWarnings("unchecked") public String execute() throws Exception { Map session = ActionContext.getContext().getSession(); String ver = (String)session.get("authImg"); if (ver.equals(vercode)) { int userId = mgr.loginValid(username,password); if (userId > 0) { return SUCCESS; } else { addActionError(getText("noMatch")); } } else { System.out.println("0k3"); addActionError(getText("vercodeErr")); } return "failure"; } private String username; private String password; private String vercode; } [/code] UserDAOHibernate.java [code="java"]package dao.user; import java.util.List; import org.springframework.dao.DataAccessException; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import model.User; public class UserDAOHibernate extends HibernateDaoSupport implements UserDAO { @SuppressWarnings("unchecked") public User findUserByNameAndPass(String username , String password) { List ul = null; try { [color=red]ul = getHibernateTemplate().find("from User au where au.username = ? and au.password = ?" ,new String[]{username,password});[/color] } catch(DataAccessException e) { System.out.println("数据访问异常"); e.printStackTrace(); } System.out.println(ul.size()); if (ul != null && ul.size() >= 1) { return (User)ul.get(0); } return null; } @SuppressWarnings("unchecked") public User findUserByName(String username) { [color=red] List ul = getHibernateTemplate().find("from User au where au.username = ?" ,username);[/color] if (ul != null && ul.size() >= 1) { return (User)ul.get(0); } return null; } @Override public User get(int id) { return (User)getHibernateTemplate().get(User.class, id); } } [/code] 问题描述,1.验证码不显示,2.但是后台能发现6位验证码,当正确的用户名,密码,和后台的验证码后,jsp页面出现: description The server encountered an internal error () that prevented it from fulfilling this request. exception java.lang.reflect.InvocationTargetException sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440) com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102) org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 控制台出现: 12:16:11,779 DEBUG SessionImpl:248 - opened session at timestamp: 12527289717 12:16:12,193 DEBUG JDBCTransaction:82 - begin 12:16:12,194 DEBUG ConnectionManager:444 - opening JDBC connection 12:16:12,197 DEBUG JDBCTransaction:87 - current autocommit status: true 12:16:12,200 DEBUG JDBCTransaction:90 - disabling autocommit 12:16:12,469 DEBUG JDBCTransaction:186 - rollback 12:16:12,471 DEBUG JDBCTransaction:227 - re-enabling autocommit 12:16:12,475 DEBUG JDBCTransaction:197 - rolled back JDBC Connection 12:16:12,476 DEBUG ConnectionManager:325 - transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources! 12:16:12,480 DEBUG ConnectionManager:464 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)] 12:16:12,480 DEBUG ConnectionManager:325 - transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources! 非常感谢大家。。。。。 [b]问题补充:[/b] liyaxi 现在异常没了,但是还是无法显示验证码图片 我的所有action都是默认命名空间,并且没有重命名的action 另外我生成图片的类是: [code="java"]package authImg; import java.io.*; import java.awt.*; import java.awt.image.*; import java.util.*; import javax.imageio.*; import javax.imageio.stream.ImageOutputStream; public class AuthImg { private static final long serialVersionUID = 1L; //设置图形验证码中字符串的字体和大小 private ByteArrayInputStream image;//图像 private String str;//验证码 public AuthImg() { init(); } /* * 取得AuthImg实例 */ public static AuthImg Instance(){ return new AuthImg(); } /* * 取得验证码图片 */ public ByteArrayInputStream getImage() { return this.image; } /* * 取得图片的验证码 */ public String getString() { return this.str; } /* * 生成随机颜色 */ private Color getRandColor(int fc, int bc) { Random random = new Random(); if (fc > 255) fc = 255; if (bc > 255) bc = 255; int r = fc + random.nextInt(bc - fc); int g = fc + random.nextInt(bc - fc); int b = fc + random.nextInt(bc - fc); return new Color(r, g, b); } /* * 生成服务器响应的服务方法 */ public void init() { int width = 100, height = 18; //生成一张新图片 BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB); //在图片中绘制内容 Graphics g = image.getGraphics(); Random random = new Random(); g.setColor(getRandColor(200, 250)); g.fillRect(1, 1, width - 1, height - 1); //设定背景色 g.setColor(new Color(102, 102, 102)); g.drawRect(0, 0, width - 1, height - 1); g.setFont(new Font("Arial Black", Font.PLAIN, 16)); //随机生成线条,让图片看起来更加杂乱 g.setColor(getRandColor(160, 200)); for (int i = 0; i < 155; i++) { int x = random.nextInt(width - 1); int y = random.nextInt(height - 1); int xl = random.nextInt(6) + 1; int yl = random.nextInt(12) + 1; g.drawLine(x, y, x + xl, y + yl); } for (int i = 0; i < 70; i++) { int x = random.nextInt(width - 1); int y = random.nextInt(height - 1); int xl = random.nextInt(12) + 1; int yl = random.nextInt(6) + 1; g.drawLine(x, y, x - xl, y - yl); } //用于保存系统生成的随机字符串 StringBuffer sRand = new StringBuffer(6); for (int i = 0; i < 6; i++) { String tmp = getRandomChar(); sRand = sRand.append(tmp); //将系统生成的随机字符添加到图形验证码图片上 g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110))); g.drawString(tmp, 15 * i + 10, 15); } //赋值验证码 this.str = sRand.toString(); g.dispose(); ByteArrayInputStream input = null; ByteArrayOutputStream output = new ByteArrayOutputStream(); //输出图形验证码图片 try { ImageOutputStream imageOut = ImageIO.createImageOutputStream(output); ImageIO.write(image, "bmp", imageOut); imageOut.close(); input = new ByteArrayInputStream(output.toByteArray()); }catch(Exception e){ System.out.println("验证码图片产生出现错误:" + e.toString()); } //赋值图像 this.image = input; } /* * 生成随机字符 */ private String getRandomChar() { int rand = (int) Math.round(Math.random() * 2); long itmp = 0; char ctmp = '\u0000'; switch(rand) { //生成大写字母的情形 case 1: itmp = Math.round(Math.random() * 25 + 65); ctmp = (char) itmp; return String.valueOf(ctmp); //生成小写字母的情形 case 2: itmp = Math.round(Math.random() * 25 + 97); ctmp = (char) itmp; return String.valueOf(ctmp); //生成数字的情形 default: itmp = Math.round(Math.random() * 9); return String.valueOf(itmp); } } } [/code] 产生图片的action是 [code="java"]package action; import java.io.ByteArrayInputStream; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import authImg.AuthImg; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class CreateCodeImgAction extends ActionSupport { private static final long serialVersionUID = 1L; public void setInputStream(ByteArrayInputStream inputStream) { this.inputStream = inputStream; } public ByteArrayInputStream getInputStream() { return inputStream; } public String execute() throws Exception { HttpServletResponse response = ServletActionContext.getResponse(); //阻止生成页面被缓存,保证每次重新生成随机验证码 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Cache-Control", "no-store"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); AuthImg authImg = AuthImg.Instance(); // 取得带有随机字符串的图片 setInputStream(authImg.getImage()); // 取得随机字符串放入HttpSession System.out.println(authImg.getString()); ActionContext.getContext().getSession().put("authImg", authImg.getString()); return SUCCESS; } private ByteArrayInputStream inputStream; }[/code] struts.xml片段 [code="java"]<package name="non-authority" extends="struts-default"> <action name="Login" class="action.LoginAction"> <result name="success">/spread/spread1.jsp</result> <result name="failure">/login.jsp</result> </action> <action name="authImg" class="action.CreateCodeImgAction"> <result type="stream"> <param name="contentType">image/bmp</param> <param name="inputName">inputStream</param> </result> <result name="success">login.jsp</result> </action> </package>[/code]
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
【JSON解析】浅谈JSONObject的使用
简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。 JSON建构于两种结构: “名称/值”对的集合(A Collection of name/va...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
立即提问