如何获取同一个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>

5个回答

使用jquery

w100224
w100224 我的代码是一个循环,相同id有多个
大约 5 年之前 回复

使用jQuery $('#shuru').val() 把前面获得值复制到value上就行了

w100224
w100224 我的代码更新了一下,问题在于id有多个
大约 5 年之前 回复
 <input id="shuru" name="init_num" class="input_text" type="text" value="0" size="3">
  <input type="hidden" id="district" name="district" value=""  >
<script>
document.getElementById('district').value=document.getElementById('shuru').value
</script>

id唯一可以使用上面的代码,如果不以为就不好搞了,要通过DOM关系来获取对象。

w100224
w100224 想请教一下就是我后来发的那个帖子,我现在传递district值的时候再id后面加了i来让id唯一,为什么还是传递不了
大约 5 年之前 回复
w100224
w100224 <input type="hidden" id="district<%=i%>" name="district" > <script> document.getElementById("district"+i).value=document.getElementById("shuru"+i).value </script>
大约 5 年之前 回复

在提交的时候onclink一下,然后获取id为shuru的值,并把获取到的值传给district。

u010674395
qq274501366 回复w100224: id不唯一?
大约 5 年之前 回复
w100224
w100224 我的代码是一个循环,相同id有多个
大约 5 年之前 回复

注意id一定不要重复

 <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" value=""  ><!-----id连接上i变为唯一------->

传入循环遍历使id不重复。然后document.getElementById("district"+i)就可以获取到对应的隐藏控件设置值了,如下


               function jianC(i,p1) {
                    /*定义变量K,用商品数量输入框里面的数字赋值*/
                    var k =document.getElementById("shuru"+i);//获取数量输入控件
                    var v=parseInt(k.value,10);
                    v--;
                    /*点击-号按钮会递减商品价格*/
                    if (v < 1) {
                        alert("亲,商品数量不能小于1!");
                        return//超限退出
                    }
                    document.getElementById("district"+i).value=v;///////////////设置值
                    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//超限退出
                    } 
                    document.getElementById("district"+i).value=v;////////////设置值
                    k.value=v;
                    k.setAttribute('sum',v*p1)//将这个物品的小计放到自定义属性sum中,方便计算总价
                    setTotal()//重新设置总价钱
                }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
同一个页面有两个表单怎么验证一次能够通过
![图片说明](https://img-ask.csdn.net/upload/201610/09/1475986814_511951.png)同一个页面有两个表单验证怎样验证一次就能通过,两个一样的表单 <div class="hide regin_tw"> <table width="650" border="0" cellspacing="0" cellpadding="0"> <form action="" method="post" name="myform2"id="form2" onsubmit="return check()"> <tr> <td width="62">邮箱地址:</td> <td width="588"><input id="email" class="rg_in" type="text"name="phone" onblur="checkPhone()" onfocus="updateRed('')"/><div id="emailMess"></div></td> </tr> <tr> <td>登录密码:</td> <td><input id="pwd" type="password" class="rg_in" name="" onblur="checkPwd()" onfocus="updateRed('pwd')"> <div id="pwdMess"></div></td> </tr> <tr> <td>确认密码:</td> <td><input id="regPwd" type="password" class="rg_in" name="" placeholder="" onblur="checkRegPwd()" onfocus="updateRed('regPwd')"/> <div id="regPwdMess"></div></td> </tr> <tr> <td>验 证 码:</td> <td><input class="rg_yzm" type="text" name="" value="" placeholder=""> <img src="images/yzm_zc.jpg"> <a href="#">看不清换一张</a></td> </tr> <tr> <td>&nbsp;</td> <td><input type="checkbox" name="" value=""> 愿意接受旅游资讯免费信息 </td> </tr> <tr> <td>&nbsp;</td> <td><a href="#"><img src="images/agree_b.jpg"></a></td> </tr> </form> </table> </div> ``` ```
Ajax提交地址为同一个方法。
是这样的,我的页面一个form表单存在两个部分,if判断是显示修改标签还是添加标签。 提交的时候就会提交到同一个方法里。其实之前是修改区域有个input value存的是修改url路径,添加区域也有个input value存的是添加的url路径。 后来我想都提交到同一个url即同一个后台方法里。判断id是否存在来判断是要修改还是添加。 ``` @ResponseBody() @RequestMapping("/edit_do") public JsonResult edit_do(Foods foods,@RequestParam("foodsImg")MultipartFile file){ JsonResult jr = new JsonResult(); try{ String path =""; if(foods.getFoods_id()!=null){ //执行更新 //如果file为空,则表示不换图片不需要重新上传 if(file!=null){ if(!FileUtil.isAllowUpImg(file.getOriginalFilename())){ return JsonResultUtil.getErrorJson("不允许上传的文件格式,请上传gif,jpg,bmp格式文件。"); } //上传图片, path = upload(file,200,200); System.out.println(path); foods.setFoods_img(path); } //执行修改 foodsManager.updateFoods(foods); }else{ //执行添加 //创建一个ID添加 Random r = new Random(1000); String foods_id ="foods"+r.nextInt()+r.nextInt(); System.out.println(foods_id); foods.setFoods_id(foods_id); if(!FileUtil.isAllowUpImg(file.getOriginalFilename())){ return JsonResultUtil.getErrorJson("不允许上传的文件格式,请上传gif,jpg,bmp格式文件。"); } //上传图片, path = upload(file,200,200); String updateTime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());//更新时间 foods.setFoods_img(path); foods.setCreate_time(updateTime); System.out.println(foods.getCreate_time()); foodsManager.insertFoods(foods); } } catch(RuntimeException e) { Logger logger = Logger.getLogger(getClass()); logger.error("上传图片出错:"+e); } catch (Exception e) { return JsonResultUtil.getErrorJson("失败"+e.getMessage()); } jr.setResult(1); jr.setMessage("成功"); return jr; } ``` 执行添加的时候,一切ok。后来修改就总是提示不成功。也不报错,我打断点,连方法都不进。问问原因,是不是不能写一个方法里。就必须要分开写。
一个jquery判断表单的代码,请师傅们帮看看。谢谢
自己练习做个自动表单判断的代码,现存在一个问题,因为涉及到判断用户输入信息是否正确,有个提示信息,现在可以通过setErrmsg提示,正确后不能通过reErrmsg删除,有个想法,通过errid来设置每次插入的li的id,然后在根据这个标记在删除,现在看来技术存在很大问题,因为errid不同步貌似,哪位师傅帮忙一下,或有没有其它办法,谢谢。 ``` <form> <div> <input id="input1" type="text" mtype="str:4:15"> <span> <ul>信息插这里</ul> </span> 这里的str:4:15代表str是处理字符串,最小4个,最长15个。 <input id="input2" type="text" mtype="str:4:15"> <span> <ul>信息插这里</ul> </span> <input type="submit" value="submit"> </div> </form> $(function () { var bool = true; var aA = "[a-zA-Z]"; var aAs = "[a-zA-Z0-9_]"; var errc = "[~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"; var errid = 0; //var $('form :input').keyup(function () { var jqs = $("#" + $(this).attr("id")).attr("mtype"); var inValue = $(this).val(); var mtystr = jqs.split(":")[0].toLocaleUpperCase(); var minl = jqs.split(":")[1]; var maxl = jqs.split(":")[2]; var errmsg = ""; $(this).attr("maxlength", maxl); var thisID = $(this).attr("id"); errid++; if (mtystr === "STR") { //处理数据 var fi = new RegExp(aA + "+"); var re = new RegExp(aA + "+" + aAs + "*"); var err = new RegExp(errc); var removeid; var errmsg = ""; if (err.test(inValue)) { alert(thisID); setErrmsg(thisID, errid, "请不要输入特殊字符!"); bool = false; } else { reErrmsg(thisID, errid); //bool = true; } if (!fi.test(inValue)) { alert(thisID); setErrmsg(thisID, errid, "此处首字符必须是字母!"); bool = false; } else { reErrmsg(thisID, errid); //bool = true; } if (!re.test(inValue)) { alert(thisID); setErrmsg(thisID, errid, "请按照标准填写,首位是字母+数字形式!"); bool = false; } else { reErrmsg(thisID, errid); } if (inValue.length < minl || inValue.length > maxl) { alert(thisID); setErrmsg(thisID, errid, "输入值的长度要求至少" + minl + "个字符,最多" + maxl + "个字符。"); bool = false; } else { reErrmsg(thisID, errid); } } else if (mtystr === "INT") { var intstr = "^[0-9]+$"; var ints = new RegExp(intstr); if (!ints.test(inValue)) { alert(thisID); setErrmsg(thisID, errid, "请输入数字格式,且不能有小数点。"); bool = false; } else { reErrmsg(thisID, errid); } if (inValue.length < minl || inValue.length > maxl) { alert(thisID); setErrmsg(thisID, errid, "输入值的长度要求至少" + minl + "个字符,最多" + maxl + "个字符。"); bool = false; } else { reErrmsg(thisID, errid); } } else if (mtystr === "MAIL") { var mailstr = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z])+$"; var mails = new RegExp(mailstr); if (!mails.test(inValue)) { alert(thisID); setErrmsg(thisID, errid, "请输入正确的邮箱地址。"); bool = false; } else { reErrmsg(thisID, errid); } } return bool; }); $('form :submit').click(function () { if (bool) { return true; } else { return false; } }); function setErrmsg(obj, errid, errinfo) {//用于插入span里信息的函数 obj = $("#" + obj); alert("obj=" + obj + " errid=" + errid + " errinfo=" + errinfo); obj.next("span").find("ul").find("#" + errid).remove(); obj.next("span").find("ul").append("<li id=\"" + errid + "\">" + errinfo + "</li>"); } function reErrmsg(obj, errid) { //用于从span里删除信息的函数 obj = $("#" + obj); obj.next("span").find("ul").find("#" + errid).remove(); } }); ```
当项目第一次启动时,注册页面ajax校验结果未返回,表单就提交了
简易表单: <form action="${pageContext.request.contextPath }/user_regist" onsubmit="return checkForm()" method=post> 登录名:<input type="text" name="user_code" onblur="checkCode()"><span id="codeSpan" ></span><br> <input type="submit" value="submit"><br> </form> // 判断登录名是否为空,或者是否已经存在 function checkCode(){ //注册文本框的值 var code = $("#user_code").val(); if(code.trim() == ""){ // 给span标签动态添加class的类 $("#codeSpan").addClass("error").html("登录名不能为空"); }else{ // 登录名不为空,发生ajax的请求 var url = "${pageContext.request.contextPath}/user_findByCode"; var param = {"user_code":code}; $.post(url,param,function(data){ if(data && data == "no"){ // 说明,登录名已经存在了,给出提示 $("#codeSpan").addClass("error").html("登录名已经存在"); }else{ // 登录名可以注册 $("#codeSpan").removeClass("error").html("可以注册"); } }); } } // 如果该方法返回false,表单不提交 function checkForm(){ checkCode(); // 有标签属性为 class="error",则阻止表单提交 if($(".error").size() == 0){ return true; }else{ return false; } } 问题描述: 项目首次启动时,在注册页面输入已存在用户名,直接点击提交按钮,此时异步校验用户名是否存在,操作span标签class属性;但是ajax回调函数未完成之前,表单信息已经提交,数据库存入重复用户。 虽然异步请求造成的bug已经通过同步锁解决了,但是我还有一个困惑! 困惑: 为什么上述bug只有项目启动后的首次访问会出现,之后再注册就可以正常的完成校验?
DWR同步的疑惑
最近在做一个bpm的项目,有个表单需要用DWR远程调用另外一个系统的方法;但在调用过程中出现了问题,这个方法有时候调用得到,有时候又调用不到,觉得是异步请求的关系,所以在代码中将请求设置成了同步,即在调用方法的地方加上了 DWREngine.setAsync(false); 在方法结束的地方加上了DWREngine.setAsync(true); 但仍然出现调用不到得现象。 代码如下: [code="java"]DWREngine.setMethod(DWREngine.ScriptTag); dwr.engine._path = "http://10.0.1.99:7001/Contract/dwr/"; dwr.util._path = "http://10.0.1.99:7001/Contract/dwr/"; SubBankAJAX._path = "http://10.0.1.99:7001/Contract/dwr/"; DWREngine.setAsync(false); var contextPath = "<%=contextPath%>"; var isSubmit = false; var max_no = 0; isForm = true; //如果为核准按钮时累计金额累加,并要求财务附件上产,如为驳回则财务附件内容清除并付款状态更改 //获得表单 function getForm(){ return document.all.applyForm; } function getAdd(){ var i = 0; var msg = ""; if (document.getElementById("cw_arriveDate").value.length != 10) { i++; msg = msg + i + ".收单日期未填写\n"; } var cwAttachfiles = document.getElementById("max_no").value; if (cwAttachfiles == 0) { i++; msg = msg + i + ".财务附件未上传"; } else { document.getElementById("fileAttach").outerHTML = "<input name='fileAttach' type='file' value='' size='50' style='height: 20px'/>"; } if (msg.length > 0) { alert(msg); return; } else { DWREngine.setAsync(false); SubBankAJAX.addPayment(document.getElementById("formEntity.contractNO").value, document.getElementById("formEntity.payMoney").value); DWREngine.setAsync(true); } var form = getForm(); form.operation.value = "release"; if (form.onsubmit == null || form.onsubmit.call(form)) { var elements = form.getElementsByTagName("input"); if (elements) { for (var i = 0; i < elements.length; i++) { if (elements[i].type == "button") elements[i].disabled = "disabled"; } } form.submit(); } } [/code] 而如果在AJAX请求的地方加上alert,则一定可以调用到;DWREngine.setAsync(false);这个方法会无效呢? 各位大侠哪位知道,告诉一下谢谢
如何实现js同一页面的值的传递,希望热心大佬帮助一下我,菜鸟实习生,没有c币。。。。。。。。
我现在在做一个退伍军人就业信息管理的模块,现在我要和另一模块退伍军人基本信息连接到一起,基本信息里面没有这个用户我就无法添加就业信息,现在我要做的是点击就业信息模块主界面点击添加信息按钮,跳转到如下界面![图片说明](https://img-ask.csdn.net/upload/201905/05/1557026572_514791.jpg), 我需要在搜索框输入用户名搜索姓名查询基本信息表内有无该用户,有该用户则会显示在下方,如图![图片说明](https://img-ask.csdn.net/upload/201905/05/1557026823_184457.jpg) 现在我所想要问的就是,我点击这一条用户信息的确定按钮,要在下方显示的就业信息添加表单里面显示所选的这条基本信息的用户名,如图![图片说明](https://img-ask.csdn.net/upload/201905/05/1557027065_102023.jpg) 我的问题就是不知道怎么传,上面的查询显示信息我是调用的基本信息的那个主页面查询所有的方法 ``` /** * 用户基本信息查询 */ public String infoList() throws Exception { try { if (pageSize == null) { pageSize = 10; } PageUtil pageUtil = new PageUtil(request); pageUtil.setPageSize(pageSize); // 获取分页的参数 totalCount = informationService.getTotalCount(); // 获取分页的参数 pageUtil.setRsCount(totalCount); pageSize = pageUtil.getPageSize(); int pageCount = pageUtil.getPageCount(); int currentPage = pageUtil.getCurrentPage(); // 产生分页的工具条 pageTool = pageUtil.createPageTool(PageUtil.Text); //从基础信息读取所有基础信息 infoList = informationService.getAll(currentPage, pageSize,name); System.out.println(infoList+"##############################################################"); } catch (RuntimeException e) { e.printStackTrace(); } return "infoList"; } ``` 然后项目用的是ssh框架,公司技术比较老,大佬莫笑,页面请求跳转 ``` @ParentPackage(value = "struts-default") @Namespace(value = "/") @Action(value = "employAction", results = { @Result(name = "list", location = "/admin/system/employ/employ_list.jsp"), @Result(name = "add", location = "/admin/system/employ/employ_add.jsp"), @Result(name = "edit", location = "/admin/system/employ/employ_edit.jsp"), @Result(name = "infoList",location = "/admin/system/employ/employ_add.jsp"), }) ``` 然后是action的全部,写的比较乱 ``` package com.gyes.employ.action; import java.io.PrintWriter; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.jfree.data.DataUtilities; import org.springframework.beans.factory.annotation.Autowired; import com.gyes.currency.util.BaseAction; import com.gyes.currency.util.DateUtil; import com.gyes.currency.util.GsonUtil; import com.gyes.currency.util.JsonUtil; import com.gyes.currency.util.MessageBean; import com.gyes.currency.util.PageUtil; import com.gyes.employ.bean.Employ; import com.gyes.employ.service.EmployService; import com.gyes.system.dept.bean.Dept; import com.gyes.system.dept.service.DeptService; import com.gyes.system.dictionary.bean.Dict; import com.gyes.system.dictionary.serivce.DictService; import com.gyes.system.information.action.InformationAction; import com.gyes.system.information.bean.Information; import com.gyes.system.information.service.InformationService; import com.gyes.system.information.service.impl.InformationServiceImpl; import com.gyes.system.user.bean.User; /** * 部门action * * @author Administrator * */ @ParentPackage(value = "struts-default") @Namespace(value = "/") @Action(value = "employAction", results = { @Result(name = "list", location = "/admin/system/employ/employ_list.jsp"), @Result(name = "add", location = "/admin/system/employ/employ_add.jsp"), @Result(name = "edit", location = "/admin/system/employ/employ_edit.jsp"), @Result(name = "infoList",location = "/admin/system/employ/employ_add.jsp"), }) public class EmployAction extends BaseAction{ @Autowired private EmployService employService; @Autowired private DictService dictService; @Autowired private InformationService informationService; private Employ employ; private String[] ids; private List<Employ> list; private String name; private Information information; //基础信息集合 private List<Information> infoList; private Map<String, Object> map = new HashMap<String, Object>(); // 显示数 private Integer pageSize; private Integer totalCount; private String pageTool; private Integer employId; // 字典中的性别集合 private List<Dict> employwayList; private String informationId; @Override public String execute() throws Exception { return null; } /** * 分页查询所有用户(list) * * @return * @throws Exception */ public String list() throws Exception { try { if (pageSize == null) { pageSize = 10; } PageUtil pageUtil = new PageUtil(request); pageUtil.setPageSize(pageSize); // 获取分页的参数 totalCount = employService.getTotalCount(); // 获取分页的参数 pageUtil.setRsCount(totalCount); pageSize = pageUtil.getPageSize(); int pageCount = pageUtil.getPageCount(); int currentPage = pageUtil.getCurrentPage(); // 产生分页的工具条 pageTool = pageUtil.createPageTool(PageUtil.Text); list = employService.getAll(currentPage, pageSize,name); } catch (RuntimeException e) { e.printStackTrace(); } return "list"; } /** * 增加就业信息 */ public String add() throws Exception { employ = employService.getEmploy(employ); //从数据字典读取就业方式 employwayList=dictService.getDictList("dic_employway"); return "add"; } /** * 用户基本信息查询 */ public String infoList() throws Exception { try { if (pageSize == null) { pageSize = 10; } PageUtil pageUtil = new PageUtil(request); pageUtil.setPageSize(pageSize); // 获取分页的参数 totalCount = informationService.getTotalCount(); // 获取分页的参数 pageUtil.setRsCount(totalCount); pageSize = pageUtil.getPageSize(); int pageCount = pageUtil.getPageCount(); int currentPage = pageUtil.getCurrentPage(); // 产生分页的工具条 pageTool = pageUtil.createPageTool(PageUtil.Text); //从基础信息读取所有基础信息 infoList = informationService.getAll(currentPage, pageSize,name); System.out.println(infoList+"##############################################################"); } catch (RuntimeException e) { e.printStackTrace(); } return "infoList"; } /** * 同一页面传递用户基本信息的姓名 */ public String getInformationName() throws Exception{ Information list=informationService.getById(informationId); System.out.println(list+"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); return list.getInformationname(); } /** * 保存新增内容 * * @return * @throws Exception */ public String save() throws Exception { try { employ.setCrateTime(DateUtil.getSysDateStr()); Dict dic = new Dict(); dic.setDictId(employ.getEmployway_id()); Dict dict = dictService.getById(dic); employ.setEmployway_id(dict.getDictId()); employ.setEmployWay(dict.getValue()); employService.insertEmploy(employ); map.put("success", true); } catch (Exception e) { e.printStackTrace(); map.put("success", false); map.put("message", e.getMessage()); } GsonUtil.writeToResponse(map, false); return NONE; } /** * 进入修改 * * @return */ public String update() throws Exception { employ = employService.getById(employ.getEmployId()); //从数据字典读取就业方式 employwayList=dictService.getDictList("dic_employway"); return "edit"; } /** * 保存修改后数据 * * @return */ public String saveEditEmploy() throws Exception { try { employ.setModifyTime(DateUtil.getSysDateStr()); Dict dic = new Dict(); dic.setDictId(employ.getEmployway_id()); Dict dict = dictService.getById(dic); employ.setEmployway_id(dic.getDictId()); employ.setEmployWay(dict.getValue()); employService.updateEmploy(employ); map.put("success", true); } catch (Exception e) { e.printStackTrace(); map.put("success", false); map.put("message", e.getMessage()); } GsonUtil.writeToResponse(map, false); return NONE; } /** * 判断用户名是否存在 * * @return */ public String AjaxName() throws Exception { MessageBean messageBean = new MessageBean(); messageBean.setFlag(false); List<Information> data = informationService.getInformationList(employ.getEmployName()); if (data.size() > 0) { messageBean.setFlag(true); } PrintWriter out = response.getWriter(); out.print(JsonUtil.objectToJson(messageBean)); return NONE; } /* * 删除部门 */ public String delete() throws Exception { try { employService.deleAbso(ids); map.put("success", true); } catch (Exception e) { e.printStackTrace(); map.put("success", false); map.put("message", e.getMessage()); } GsonUtil.writeToResponse(map, false); return NONE; } public Integer getEmployId() { return employId; } public void setEmployId(Integer employId) { this.employId = employId; } public EmployService getEmployService() { return employService; } public void setEmployService(EmployService employService) { this.employService = employService; } public DictService getDictService() { return dictService; } public void setDictService(DictService dictService) { this.dictService = dictService; } public Employ getEmploy() { return employ; } public void setEmploy(Employ employ) { this.employ = employ; } public List<Employ> getList() { return list; } public void setList(List<Employ> list) { this.list = list; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Map<String, Object> getMap() { return map; } public void setMap(Map<String, Object> map) { this.map = map; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getTotalCount() { return totalCount; } public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; } public String getPageTool() { return pageTool; } public void setPageTool(String pageTool) { this.pageTool = pageTool; } public String[] getIds() { return ids; } public void setIds(String[] ids) { this.ids = ids; } public List<Dict> getEmploywayList() { return employwayList; } public void setEmploywayList(List<Dict> employwayList) { this.employwayList = employwayList; ``` ``` } public List<Information> getInfoList() { return infoList; } public void setInfoList(List<Information> infoList) { this.infoList = infoList; } public InformationService getInformationService() { return informationService; } public void setInformationService(InformationService informationService) { this.informationService = informationService; } public Information getInformation() { return information; } public void setInformation(Information information) { this.information = information; } } ``` 最后是添加页面的代码 ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>菜单增加</title> <link href="${pageContext.request.contextPath}/admin/css/box_css.css" rel="stylesheet" type="text/css" /> <link href="${pageContext.request.contextPath}/admin/css/content_css.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="${pageContext.request.contextPath}/admin/script/jquery.js"></script> <link rel="stylesheet" href="${pageContext.request.contextPath}/admin/css/common.css" type="text/css"/> <script type="text/javascript" src="${pageContext.request.contextPath}/admin/script/common.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/admin/js/ui.js"></script> <link href="${pageContext.request.contextPath}/admin/css/style.css" rel="stylesheet" /> <script language="javascript"> function checkEmployName(){ var formData = jQuery("#form1").serializeArray(); var saveURL = "<%=path%>/employAction!AjaxName?date="+new Date()+""; jQuery.post(saveURL,formData,function(jsonData){ var message = jsonData.message; var flag = jsonData.flag; if (flag == true){ document.getElementById('employName').value=''; mizhu.alert('', '用户名已经存在,请重新填写!',''); } },"json"); } function save(){ var employName=document.getElementById("employName"); if(employName.value==''){ mizhu.alert('', '用户名称不能为空',''); return false; } var employIndustry=document.getElementById("employIndustry"); if(employIndustry.value==''){ mizhu.alert('', '从事行业不能为空',''); return false; } var employ_workTime=document.getElementById("employ_workTime"); if(employ_workTime.value==''){ mizhu.alert('', '工作年限不能为空',''); return false; }else if(employ_workTime.value>=100){ mizhu.alert('', '工作年限请输入小于100的数字!!!!',''); return false; } var employWay=document.getElementById("employWay"); if(employWay.value==''){ mizhu.alert('', '就业方式必须选择!!!',''); return false; } var eduName=document.getElementById("eduName"); if(eduName.value==''){ mizhu.alert('', '教育机构名称不能为空',''); return false; } var companyName=document.getElementById("companyName"); if(companyName.value==''){ mizhu.alert('', '公司名称不能为空',''); return false; } var formData = jQuery("#form1").serializeArray(); var saveURL = "<%=path%>/employAction!save"; $.ajax({ type:"POST", url:saveURL, data:formData, dataType:"JSON", success:function(obj){ //alert(obj.success); if(obj.success){ $.message("success","新增用户信息成功...."); setTimeout(function(){ location.href="${pageContext.request.contextPath}/employAction!list"; }, 1000); }else{ $.message("error",obj.message); } } }); //不提交表单 return false; } function findOut(){ var name=$("#inputname").val(); var saveURL = "${pageContext.request.contextPath}/employAction!infoList?name="+name+""; if (saveURL!="/employAction!infoList?name=") { window.location.href = saveURL; var ifo=document.getElementById("info"); ifo.style.display="block"; alert(informationname); }else{ } return false; }; function yes(){ var emp=document.getElementById("emp"); emp.style.display="block"; return false; } </script> </head> <body> <div class="main"> <div class="increase_box"> <div class="increase_list"> <h3><b>就业信息管理</b><span></span></h3> <div class="increase_main"> <form id="form1" novalidate="novalidate"> <input type="hidden" id="employId" name="employ.employId" value='<s:property value="employ.employId"/>' /> <input type="hidden" id="informationId" name="information.informationId" value='<s:property value="information.informationId"/>' /> <tr> <td align="left" valin="middle"> <form action="${pageContext.request.contextPath}/employAction!infoList" method="post"> <td align="left" valign="middle" style="text-align:right; width:190px;"></td> <input type="text" class="input_k2" placeholder="请输入用户名" value="" id="inputname" /> </td> <td align="left" valign="middle" style="text-align:right; width:80px;"> <a class="byget" href="javascript:" onclick="findOut()">查询</a></td> </form> </tr> <table width="96%" border="0" align="center" cellpadding="0" cellspacing="0" class="box_news_show assessment_show" style="display: block" id="info"> <tr> <th width="10%" align="center" valign="middle" class="borderright">ID</th> <th width="10%" align="center" valign="middle" class="borderright">姓名</th> <th width="10%" align="center" valign="middle" class="borderright">入伍时间</th> <th width="10%" align="center" valign="middle" class="borderright">退伍时间</th> <th width="10%" align="center" valign="middle" class="borderright">入党时间</th> <th width="20%" align="center" valign="middle" class="borderright">所在单位</th> <th width="10%" align="center" valign="middle" class="borderright">状态</th> <th width="20%" align="center" valign="middle" class="borderright">身份证号码</th> <th align="center" valign="middle" class="borderright">录入人员</th> <th width="5%" align="center" valign="middle">操作</th> </tr> <s:iterator value="infoList" status="st"> <tr onMouseOut="this.style.backgroundColor='#ffffff'" onMouseOver="this.style.backgroundColor='#edf5ff'"> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="informationId"/></td> <td align="center" valign="middle" class="borderright borderbottom" ><s:property value="informationname"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="enlistmenttime"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="retiredtime"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="partytime"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="unit"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="stats"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="numbers"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="entrypersonnel"/></td> <td><input type="submit" value="确定" class="button_1" onclick="yes()"/></td> </tr> </s:iterator> </table> <table width="96%" border="0" align="center" cellpadding="0" cellspacing="0" class="box_news_show assessment_show" style="display: none" id="emp"> <tr> <td width="20%" class="box_news_show_h3">用户名称: </td> <td width="28%" class="box_news_show_h1"> <input name="information.informaationname" type="text" class="input_k2" onblur="checkEmployName()" maxlength="20" id="infoname"/> <span style="color:red;" id="infoname">*</span> </td> <td width="20%" class="box_news_show_h3">从事行业</td> <td width="28%" class="box_news_show_h1"> <s:textfield name="employ.employIndustry" id="employIndustry" class="input_k2" /> <span style="color:red;" id="employIndustry">*</span> </td> </tr> <tr> <td width="20%" class="box_news_show_h3">工作年限</td> <td width="28%" class="box_news_show_h1"> <s:textfield name="employ.workTime" class="input_k2" id="employ_workTime" onkeyup="this.value=this.value.replace(/\D/g,'')"/>&nbsp;年 <span style="color:red;" id="employ_workTime">*</span> </td> <%-- <td width="20%" class="box_news_show_h3">就业方式</td> <td width="28%" class="box_news_show_h1"> <s:select name="employ.employway_id" list="employwayList" listKey="dictId" listValue="value" id="employWay" headerKey="" headerValue="请选择" class="input_k2"></s:select> <span style="color:red;" id="employ_employWay">*</span> </td> --%> </tr> <tr > <td width="20%" class="box_news_show_h3">培训机构名称</td> <td width="28%" class="box_news_show_h1"> <s:textfield name="employ.eduName" class="input_k2" id="eduName" /> <span style="color:red;" id="employ_eduName">*</span> </td> <td width="20%" class="box_news_show_h3">公司名称</td> <td width="28%" class="box_news_show_h1"> <s:textfield name="employ.companyName" id="companyName" class="input_k2" /> <span style="color:red;" id="employ_companyName">*</span> </td> </tr> </table> </div> </div> <div class="increase_bottom"><p> <input type="button" value="保存" class="button_1" onclick="save()"/> <input type="button" class="button_2" value="返回" onclick="history.go(-1)"/> </p> </div> <div class="clear"></div> </div> </form> </body> </html> ``` 求求各位大佬了,救救孩子吧............................
关于用response.setHeader的方式定时刷新的条件问题
如题: 在Jsp中加入如下语句 [code="java"] <% String path = request.getContextPath(); response.setHeader("refresh","5");//定时刷新 %> [/code] 可以每隔5秒刷新一次。我的页面用的struts2标签,查询条件如下:与上面的代码在同一个Jsp中,form表单代码如下: [code="java"] <s:form name="Query" action="getEcAlarmRecord" theme="simple" onsubmit="getPageSize()"> <td align='left' bgcolor="#C8DDF4"> <s:label value="集团客户:"></s:label> <s:textfield name="ecId" id="ecId" cssClass="input_class" maxlength="20" cssStyle="width:160px" /> <s:hidden name="alm_status"></s:hidden> <s:hidden name="ecCode"></s:hidden> <s:hidden name="ecName"></s:hidden> <s:hidden name="pageSize"></s:hidden> <s:submit cssClass="button_class" value=" 查询 "/> </td> </s:form> [/code] 我点击查询之后,出来的数据。然后刷新,却没有把ecCode,ecId,ecName等参数传入刷新。请问我将如何做才能让它刷新时查询参数不丢失呢,即ecId也是带入刷新的?
EXT 列布局 各列不在同一行上
<p>我在用EXT做一个查询的页面时,整体采用的form布局,然后各行采用列布局,但是显示出来后,各行不在同一行上,不能对齐,如下图,这个应该怎么来调整呢?麻烦大家帮帮忙,谢谢啦</p> <p><br><img src="http://dl.iteye.com/upload/attachment/0073/3731/b0368f16-ef2c-33ef-9471-561ea69fdbd9.png" alt=""></p> <p> </p> <p>代码如下:</p> <p> var _search = new Ext.form.FormPanel({</p> <pre name="code" class="FormPanel"> title : "查询", columnWidth : 1, collapsible:true, autoHeight : true, frame : true, renderTo : 'panelSearch', layout : "form", // 整个大的表单是form布局 //labelWidth : 65, labelAlign : "right", titleCollapse: true, items : [{ // 行1 layout : "column", // 从左往右的布局 items : [{ columnWidth : .25, // 该列有整行中所占百分比 layout : "form", // 从上往下的布局 items : [ kind ] }, { columnWidth : .2, layout : "form", items : [{ xtype:'textfield', //labelWidth: 125, //width: 120, labelStyle:'color: #396095;font-weight:bold', fieldLabel: '&lt;s:property value="%{getText('componentName')}"/&gt;', name: 'jmeComponents.componentName', id: 'componentName', value:'&lt;s:property value="jmeComponent.componentName"/&gt;', readOnly: false, allowBlank:true, maxLength : 32 }] }, { columnWidth : .4, layout : "form", items : [{ buttons:[{ text: '&lt;s:property value="%{getText('select')}"/&gt;', id:'queryId', type: 'submit', handler: function(){ if(_search.getForm().isValid()){//验证合法后使用加载进度条 var grid = Ext.getCmp("gridPowerCount"); var store = grid.getStore(); //机房名称 var serverRoomId = Ext.getCmp("serverRoomId").getValue(); var componentName = Ext.getCmp("componentName").getValue(); store.baseParams["jmeComponent.serverRoomId"] = serverRoomId; store.baseParams["jmeComponent.componentName"] = componentName; var url = Ext.urlEncode(store.baseParams); store.load(); } } }] }] }] }, {// 行2 layout : "column", items : [{ layout : "form", columnWidth : .2, items : [{ xtype : "textfield", id : "branchA", labelStyle:'color: #396095;font-weight:bold', fieldLabel : "A路功率(KW)", width : 100 }] }, { layout : "form", columnWidth : .2, items : [{ xtype : "textfield", id : "branchB", labelStyle:'color: #396095;font-weight:bold', fieldLabel : "B路功率(KW)", width : 100 }] }, { layout : "form", columnWidth : .2, items : [{ xtype : "textfield", id : "branchC", labelStyle:'color: #396095;font-weight:bold', fieldLabel : "C路功率(KW)", width : 100 }] }, { layout : "form", columnWidth : .2, items : [{ xtype : "textfield", id : "branchD", labelStyle:'color: #396095;font-weight:bold', fieldLabel : "D路功率(KW)", width : 100 }] }, { layout : "form", columnWidth : .2, items : [{ xtype : "textfield", id : "branchCount", labelStyle:'color: #396095;font-weight:bold', fieldLabel : "总功率(KW)", width : 100 }] }] }, {// 行3 layout : "column", items : [{ layout : "form", columnWidth : .2, items : [{ xtype : "textfield", id : "branchEnergyA", labelStyle:'color: #396095;font-weight:bold', fieldLabel : "A路电能(KWH)", width : 100 }] }, { layout : "form", columnWidth : .2, items : [{ xtype : "textfield", id : "branchEnergyB", labelStyle:'color: #396095;font-weight:bold', fieldLabel : "B路电能(KWH)", width : 100 }] }, { layout : "form", columnWidth : .2, items : [{ xtype : "textfield", id : "branchEnergyC", labelStyle:'color: #396095;font-weight:bold', fieldLabel : "C路电能(KWH)", width : 100 }] }, { layout : "form", columnWidth : .2, items : [{ xtype : "textfield", id : "branchEnergyD", labelStyle:'color: #396095;font-weight:bold', fieldLabel : "D路电能(KWH)", width : 100 }] }, { layout : "form", columnWidth : 0.2, items : [{ xtype : "textfield", id : "branchEnergyCount", labelStyle:'color: #396095;font-weight:bold', fieldLabel : "总电能(KWH)", width : 100 }] }] }] });</pre>
ssm 框架已经实现,但是ajax返回验证有毛病
``` <%@ 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>js+ajax</title> <script type="text/javascript" src="static/bootstrap/js/jquery-2.0.3.js"></script> <script type="text/javascript"> function validate(){ var name= $("#name").val(); if(name==null||name==""){ //为空隐藏提交按钮 var ui =document.getElementById("tijiao"); ui.style.display="none"; //这里是简单的显示 不设计后台,前台做的判断 $("#namediv").html("用户名不可以为空"); }else{ //ajax实现 //11111111获取XMLhtmlRequestxml对象 var req=createXmlHttpRequest(); //222222222准备url 数据 回调函数 //这个name是function下面var的参数. var url="/maven/reg1.do?name="+name; //还有一个参数表示的是异步还是同步,一般不写直接就是true,异步的 req.open("GET",url,true); //3333333333这个就是回调函数 req.onreadystatechange=callback; //这个send是在从servlet判断你的账号是不是存在, 如果是true就说名字存在,给页面返回了以后才有的.为啥写空不知道 //4发送请求 req.send(null); //回调函数 function callback(){ //第一个是我们的服务器成功接受了响应,并且解释了出来,状态4 第二个是服务器内部没有发生错误, url什么的也没有错, if(req.readyState=4&&req.status==200){ var date=req.responseText; if(date=="false"){ //下面的是意思是,如果账号存在了,提交按钮自动消失 //超级叼 var ui =document.getElementById("tijiao"); ui.style.display="none"; $("#namediv").html("用户名已经存在"); }else{ //不为空了,按钮一直显示 var ui =document.getElementById("tijiao"); ui.style.display=""; $("#namediv").html("用户名可以使用"); } } } } } function createXmlHttpRequest(){ //如果是ie6以上版本的浏览器 if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else{ //如果浏览器是ie以下的 return new ActiveXObject("Microsoft.XMLHTTP"); } } </script> </head> <body> <form action="/maven/reg1.do" id="form1"> <table id="aa"> <tr> <td>用户名</td> <td><input type="text" name="username" id="name" onblur="validate();" />&nbsp;<font color="red">*</font></td> <td> <div id="namediv" style="display: inline"></div> </td> <td>密码</td> <td><input type="password" name="password"></td> <td>电话</td> <td><input type="text" name="phone"></td> <td><input type="submit" value="点击注册" id="tijiao"></td> </tr> </table> </form> </body> </html> ``` ``` ``` ``` package com.gray.user.controller; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.gray.user.entity.RegUser; import com.gray.user.service.impl.RegServiceImpl; import com.gray.user.service.impl.UserServiceImpl; @Controller public class RegController { @Autowired private RegServiceImpl userService; //自动装载他到spring @RequestMapping("/reg1.do") //url public String dologin(Model model,HttpServletResponse res,@RequestParam String username,RegUser rg,HttpServletResponse response) throws IOException{ boolean used=false; System.out.println("测试参数获取到bean没有"+rg.getUsername()+rg.getPassword()+rg.getPhone()); rg.setUsername(username); if(userService.doUserLogin(rg)){ used=true; System.out.println("通过control到--->service---到dao---到usermapp.在返回回来,service里面是ture,就是说账号不重复"); }else{ used=false; System.out.println("通过control到--->service---到dao---到usermapp.在返回回来,service里面是false,重复了账号 "); } return "regsuccess"; } } ``` ``` package com.gray.user.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.gray.user.dao.UserDao; import com.gray.user.entity.RegUser; import com.gray.user.entity.User; import com.gray.user.service.RegService; import com.gray.user.service.UserService; @Service public class RegServiceImpl implements RegService { @Autowired private UserDao<RegUser> dao; @Override public boolean doUserLogin(RegUser ruser) { //第一次执行查询数据库,查询 userdao selectUserName方法。 他这个方法和user.xml里面的id为selectUserName串联了. //也就是直接调用查询语句,并且吧值返回给reguser 类 System.out.println("testRegServiceImpl------->查询数据库,查询语句为id是selectusername"); List<RegUser> list = dao.selectUserName(ruser.getUsername()); System.out.println("查到了集合大小是"+list.size()+"查到了和你账号相同是的是几个"); if(list.size() == 0){ System.out.println("RegServiceImpl---你没有查询到你账号和数据库相同的信息.所以你return,"); for(int i=0;i<list.size();i++){ System.out.println(list.get(i).getUsername()); } return true; }else{ if(list.size()!=0){ System.out.println("regServiceImpl---查询到和你相同的账号不是0个,返回false"); return false; }else{ System.out.println("regserviceImpl----其他情况我也不知道啥情况,也返回false"); return false; } } } } ``` ``` 页面上的ajax 他就一直出毛病,数据库有个账号名是aa 只有我在表单填写aa 他才在网页提示账号重复, 别的任何都不提示,只会提示不能为空, 而且还失灵时不灵。 但是用system. 输出 我写的任何判断都是对了, 这是为啥? 请求大神给我说下,最好说下哪里错了。谢谢了
国际化阿拉伯语乱码,日文不会
一个jsp form表单,后台用springMvc request.getparameter("")接收参数,经校验,中文,日文等都不会出现乱码问题,唯独阿拉伯语出现乱码,为什么 比如: القرص \ سحابة التخزين \الرعب \ الاباحية1 jsp的Ajax请求:para2为阿拉伯语;para1 为日语 $.ajax( { type : "POST", url : basePath+"test2015/knockoutjs201502.jhtml?para0='張三'&para1=ディスク&para2=الاباحية", async: false, //false为同步请求,默认为异 dataType : "JSON", success : function(result) { self.dynamicArray(true); self.staticArray(false); self.count(result.count); self.allDatas($.parseJSON(result.data));//转为json格式 } }); springMvc方法,同样的实现方式,中午和日文不会乱码,阿拉伯语会 @RequestMapping(value = "/knockoutjs201502") @ResponseBody public String knockoutJs(HttpServletRequest request, HttpServletResponse response) { String para0 = request.getParameter("para0"); try { para0 = new String(request.getParameter("para0").getBytes("ISO-8859-1"), "UTF-8");//还原成原始字符串 }catch (Exception e) { e.printStackTrace(); } String para1 = request.getParameter("para1"); try { para1 = new String(request.getParameter("para1").getBytes("ISO-8859-1"), "UTF-8");//还原成原始字符串 }catch (Exception e) { e.printStackTrace(); } String para2 = request.getParameter("para2"); try { para2 = new String(request.getParameter("para2").getBytes("ISO-8859-1"), "UTF-8");//还原成原始字符串 }catch (Exception e) { e.printStackTrace(); } JsonArray data = new JsonArray(); JsonObject jsonObject = null; for (int i = 0; i < 4; i++) { jsonObject = new JsonObject(); jsonObject.addProperty("name", "张三" + i); jsonObject.addProperty("age", 20 + i); jsonObject.addProperty("addTime", new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss:SSS").format(new Date())); data.add(jsonObject); } JsonObject jsonData = new JsonObject(); jsonData.addProperty("count", data.size()); jsonData.addProperty("data", data.toString()); return jsonData.toString(); }
struts token 页面刷新提交
在一个action中具有三个方法:[code="java"] selectall(request,response,form,mapping)(转向的页面为a.jsp,分两部分:1.具有提交功能,可以设置表单。2.用来列出已经设好的信息。),delete(request,response,form,mapping)(在a.jsp页面的列表选项删除功能提交后进行删除操作);add(request,response,form,mapping)(添加功能) [/code] 用户登录后,先调用这个action的selectall方法进入a.jsp,我在selectall方法中设置了savetoken(): [code="java"]try { allRecorders = crmDao.getCombototal(org); all = crmDao.getAllCombo(currentPage, lineSize, org); } catch (Exception e) { e.printStackTrace(); } saveToken(request); [/code] 在delete方法中加入:[code="java"]if(!isTokenValid(request)){ saveToken(request); request.setAttribute("errormessage", "套餐已经删除,不能重复删除!"); return mapping.findForward("taocanexit"); }else{ crmDao.deleteTaocan(tcid); resetToken(request); return selectall(mapping, form, request, response); } [/code] 虽然是在同一个action中,但是在跳转到a.jsp前,是先用类似于xx.do?method=selectall链接转请求的,在selectall中我已经调用了saveToken方法创建了新的令牌,然后转到a.jsp,在a.jsp中包含两部分::1.具有提交功能,可以设置表单。2.用来列出已经设好的信息。在列表信息中我点击删除的时候,[color=red][b]if(!isTokenValid(request)){//进入到这里面了[/b][/color]。在a.jsp页面中我查看源码也看到了生成的token: [code="java"]<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="3cdb44ebf897b9223eef7001f55efc52"> </div>[/code]但是第一次点击就执行到if(!isTokenValid(request)){//进入到这里面了 [b]问题补充:[/b] String token_request =request.getParameter("org.apache.struts.taglib.html.TOKEN"); //打出来看看是什么 System.out.println("token in request is:"+ token_request); 得到的是: [color=red]token in request is:null [/color] 可是a.jsp源码里有啊: [color=red]<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="a2d9e67261765d51780b2faeda2e5b45">[/color] [b]问题补充:[/b] [code="java"] <html:javascript formName="comboinitForm" /> <html:form method="post" action="/comboinit.do?method=comboinit"> <tr><td width="19" height="25"></td><td align="left"> 套餐名称:&nbsp;<html:text property="tcname" size="14" maxlength="60"></html:text> &nbsp;&nbsp;&nbsp;&nbsp; 价格:&nbsp;<html:text property="price" size="13" onblur="countCheck()"></html:text>&nbsp;&nbsp;&nbsp;&nbsp; 计费方式:&nbsp;<html:select property="sftype"> <html:option value="3">按年</html:option><html:option value="2">半年</html:option><html:option value="1">按季</html:option> <html:option value="0">按月</html:option><html:option value="4">按次</html:option> </html:select>&nbsp;&nbsp;&nbsp;&nbsp; 付费方式:&nbsp;<html:select property="fftype"> <html:option value="0">预付</html:option><html:option value="1">后付</html:option> </html:select>&nbsp;&nbsp;&nbsp;&nbsp; </td></tr> <tr><td height="25"></td><td align="left"> 描述:&nbsp;<html:text property="tcmark" size="86" maxlength="150"></html:text> </td></tr> <tr><td height="40"></td><td align="left"> 备注:&nbsp;<html:textarea property="comments" cols="85" rows="2" ></html:textarea> </td></tr> <tr><td width="19" height="25"></td><td align="center" valign="middle" > <table width="100%" border="0" bordercolor="#00FF00"><tr><td align="right"> <input type="button" value="新增记录" onClick="f_submit();"></td> <td align="right">&nbsp;&nbsp;&nbsp;&nbsp;</td></tr> </table> </td></tr> <tr><td colspan="2" height="26"> <table width="100%" background="images/ti.jpg" class="style_title" border="0" bordercolor="#0000FF"> <tr height="26"> <td width="11"></td> <td width="75" align="center" >套餐名称</td> <td width="80" align="center" >计费方式</td> <td width="75" align="center" >套餐价格</td> <td width="75" align="center" >付费方式</td> <td width="122" align="left" >&nbsp;&nbsp;描述</td> <td width="130" align="left" >&nbsp;&nbsp;备注</td> <td width="70" align="left" >内容设置</td> <td width="42" align="center" >修改</td> <td width="46" align="center" >删除</td> </tr></table></td> </tr> <tr><td colspan="2" height="180" valign="top"> <table class="style12" border="0" bordercolor="#0000FF"> <logic:present name="all" scope="request"> <logic:iterate id="combo" name="all" scope="request"> <tr height="16"> <td width="14" align="center"><img src="images/tag.jpg" border="0"></td> <td width="74" >${combo.tcname}</td> <td width="77" align="center">${combo.price}</td> <td width="122" align="center">${combo.tcmark}</td> <td width="155">&nbsp;&nbsp;${combo.comments}</td> <td width="70" align="left"><a href="combowork.do?method=selectall&tcid=${combo.tcid}&TB_iframe=true&height=343&width=444" class="thickbox">套餐内容</a></td> <td width="58" align="center" ><a href="comboinit.do?method=comboedit&tcid=${combo.tcid}&TB_iframe=true&height=201&width=402" class="thickbox">编辑</a>&nbsp;</td> <td align="center"><a href="#" onClick="f_delete(${combo.tcid});">删除</a></td> </tr> </logic:iterate> </logic:present> </table></td> </tr> </html:form> [/code] [b]问题补充:[/b] 删除的时候不是提交的form,拿这个怎么改呢? [b]问题补充:[/b] 这个能不能在js中将token传输过去,我在js中改为两个参数然后改成这样: [code="java"] function f_delete(id,token) { if(confirm('你确认要删除吗?')) this.location.href="comboinit.do?method=delete&tcid="+id+"&org.apache.struts.taglib.html.TOKEN="+token; } [/code] delete删除的时候改为: [code="java"] <a href="#" onClick="f_delete(${combo.tcid},${org.apache.struts.taglib.html.TOKEN});">删除</a> [/code] 可是这样后,a.jsp源码中[color=red]${org.apache.struts.taglib.html.TOKEN}为空[/color]传不过去,如果用js传该怎么写呢? [color=red]修改Action,然后 提交当前Form吧; [/color] 如果这样,有需要怎么改呢?谢谢! [b]问题补充:[/b] [code="java"]function f_delete(id,tokenId) { if(confirm('你确认要删除吗?')) var token = document.getElementById(tokenId).value; this.location.href="comboinit.do?method=delete&tcid="+id+"&org.apache.struts.taglib.html.TOKEN="+token; } <a href="#" onClick="f_delete(${combo.tcid},'org.apache.struts.taglib.html.TOKEN');">删除</a> [/code] 这样传过去[color=red]'org.apache.struts.taglib.html.TOKEN'[/color]在url中显示为: [color=red]&org.apache.struts.taglib.html.TOKEN=org.apache.struts.taglib.html.TOKEN[/color] [b]问题补充:[/b] 谢谢[color=red]bohemia[/color],新年快乐!
淘淘商城选择类目子节点不显示的问题(EASYUI异步树) 求大神指点!!!
这个是现在的样子: ![图片说明](https://img-ask.csdn.net/upload/201810/22/1540220574_69778.png) 正确的样子: ![图片说明](https://img-ask.csdn.net/upload/201810/22/1540220640_433459.png) DAO层 POJO ![图片说明](https://img-ask.csdn.net/upload/201810/22/1540220824_863010.png) Service ![图片说明](https://img-ask.csdn.net/upload/201810/22/1540220941_247864.png) controller ![图片说明](https://img-ask.csdn.net/upload/201810/22/1540220983_480770.png) JSP ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <link href="/js/kindeditor-4.1.10/themes/default/default.css" type="text/css" rel="stylesheet"> <script type="text/javascript" charset="utf-8" src="/js/kindeditor-4.1.10/kindeditor-all-min.js"></script> <script type="text/javascript" charset="utf-8" src="/js/kindeditor-4.1.10/lang/zh_CN.js"></script> <div style="padding:10px 10px 10px 10px"> <form id="itemAddForm" class="itemForm" method="post"> <table cellpadding="5"> <tr> <td>商品类目:</td> <td> <a href="javascript:void(0)" class="easyui-linkbutton selectItemCat">选择类目</a> <input type="hidden" name="cid" style="width: 280px;"></input> </td> </tr> <tr> <td>商品标题:</td> <td><input class="easyui-textbox" type="text" name="title" data-options="required:true" style="width: 280px;"></input></td> </tr> <tr> <td>商品卖点:</td> <td><input class="easyui-textbox" name="sellPoint" data-options="multiline:true,validType:'length[0,150]'" style="height:60px;width: 280px;"></input></td> </tr> <tr> <td>商品价格:</td> <td><input class="easyui-numberbox" type="text" name="priceView" data-options="min:1,max:99999999,precision:2,required:true" /> <input type="hidden" name="price"/> </td> </tr> <tr> <td>库存数量:</td> <td><input class="easyui-numberbox" type="text" name="num" data-options="min:1,max:99999999,precision:0,required:true" /></td> </tr> <tr> <td>条形码:</td> <td> <input class="easyui-textbox" type="text" name="barcode" data-options="validType:'length[1,30]'" /> </td> </tr> <tr> <td>商品图片:</td> <td> <a href="javascript:void(0)" class="easyui-linkbutton picFileUpload">上传图片</a> <input type="hidden" name="image"/> </td> </tr> <tr> <td>商品描述:</td> <td> <textarea style="width:800px;height:300px;visibility:hidden;" name="desc"></textarea> </td> </tr> <tr class="params hide"> <td>商品规格:</td> <td> </td> </tr> </table> <input type="hidden" name="itemParams"/> </form> <div style="padding:5px"> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="submitForm()">提交</a> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="clearForm()">重置</a> </div> </div> <script type="text/javascript"> var itemAddEditor ; //页面初始化完毕后执行此方法 $(function(){ //创建富文本编辑器 //itemAddEditor = TAOTAO.createEditor("#itemAddForm [name=desc]"); itemAddEditor = KindEditor.create("#itemAddForm [name=desc]", TT.kingEditorParams); //初始化类目选择和图片上传器 TAOTAO.init({fun:function(node){ //根据商品的分类id取商品 的规格模板,生成规格信息。第四天内容。 TAOTAO.changeItemParam(node, "itemAddForm"); }}); }); //提交表单 function submitForm(){ //有效性验证 if(!$('#itemAddForm').form('validate')){ $.messager.alert('提示','表单还未填写完成!'); return ; } //取商品价格,单位为“分” $("#itemAddForm [name=price]").val(eval($("#itemAddForm [name=priceView]").val()) * 100); //同步文本框中的商品描述 itemAddEditor.sync(); //取商品的规格 var paramJson = []; $("#itemAddForm .params li").each(function(i,e){ var trs = $(e).find("tr"); var group = trs.eq(0).text(); var ps = []; for(var i = 1;i<trs.length;i++){ var tr = trs.eq(i); ps.push({ "k" : $.trim(tr.find("td").eq(0).find("span").text()), "v" : $.trim(tr.find("input").val()) }); } paramJson.push({ "group" : group, "params": ps }); }); //把json对象转换成字符串 paramJson = JSON.stringify(paramJson); $("#itemAddForm [name=itemParams]").val(paramJson); //ajax的post方式提交表单 //$("#itemAddForm").serialize()将表单序列号为key-value形式的字符串 $.post("/item/save",$("#itemAddForm").serialize(), function(data){ if(data.status == 200){ $.messager.alert('提示','新增商品成功!'); } }); } function clearForm(){ $('#itemAddForm').form('reset'); itemAddEditor.html(''); } </script> ``` JS ``` Date.prototype.format = function(format){ 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; }; var TT = TAOTAO = { // 编辑器参数 kingEditorParams : { //指定上传文件参数名称 filePostName : "uploadFile", //指定上传文件请求的url。 uploadJson : '/pic/upload', //上传类型,分别为image、flash、media、file dir : "image" }, // 格式化时间 formatDateTime : function(val,row){ var now = new Date(val); return now.format("yyyy-MM-dd hh:mm:ss"); }, // 格式化连接 formatUrl : function(val,row){ if(val){ return "<a href='"+val+"' target='_blank'>查看</a>"; } return ""; }, // 格式化价格 formatPrice : function(val,row){ return (val/1000).toFixed(2); }, // 格式化商品的状态 formatItemStatus : function formatStatus(val,row){ if (val == 1){ return '正常'; } else if(val == 2){ return '<span style="color:red;">下架</span>'; } else { return '未知'; } }, init : function(data){ // 初始化图片上传组件 this.initPicUpload(data); // 初始化选择类目组件 this.initItemCat(data); }, // 初始化图片上传组件 initPicUpload : function(data){ $(".picFileUpload").each(function(i,e){ var _ele = $(e); _ele.siblings("div.pics").remove(); _ele.after('\ <div class="pics">\ <ul></ul>\ </div>'); // 回显图片 if(data && data.pics){ var imgs = data.pics.split(","); for(var i in imgs){ if($.trim(imgs[i]).length > 0){ _ele.siblings(".pics").find("ul").append("<li><a href='"+imgs[i]+"' target='_blank'><img src='"+imgs[i]+"' width='80' height='50' /></a></li>"); } } } //给“上传图片按钮”绑定click事件 $(e).click(function(){ var form = $(this).parentsUntil("form").parent("form"); //打开图片上传窗口 KindEditor.editor(TT.kingEditorParams).loadPlugin('multiimage',function(){ var editor = this; editor.plugin.multiImageDialog({ clickFn : function(urlList) { var imgArray = []; KindEditor.each(urlList, function(i, data) { imgArray.push(data.url); form.find(".pics ul").append("<li><a href='"+data.url+"' target='_blank'><img src='"+data.url+"' width='80' height='50' /></a></li>"); }); form.find("[name=image]").val(imgArray.join(",")); editor.hideDialog(); } }); }); }); }); }, // 初始化选择类目组件 initItemCat : function(data){ $(".selectItemCat").each(function(i,e){ var _ele = $(e); if(data && data.cid){ _ele.after("<span style='margin-left:10px;'>"+data.cid+"</span>"); }else{ _ele.after("<span style='margin-left:10px;'></span>"); } _ele.unbind('click').click(function(){ $("<div>").css({padding:"5px"}).html("<ul>") .window({ width:'500', height:"450", modal:true, closed:true, iconCls:'icon-save', title:'选择类目', onOpen : function(){ var _win = this; $("ul",_win).tree({ url:'/item/cat/list', animate:true, method:"POST", onClick : function(node){ if($(this).tree("isLeaf",node.target)){ // 填写到cid中 _ele.parent().find("[name=cid]").val(node.id); _ele.next().text(node.text).attr("cid",node.id); $(_win).window('close'); if(data && data.fun){ data.fun.call(this,node); } } } }); }, onClose : function(){ $(this).window("destroy"); } }).window('open'); }); }); }, createEditor : function(select){ return KindEditor.create(select, TT.kingEditorParams); }, /** * 创建一个窗口,关闭窗口后销毁该窗口对象。<br/> * * 默认:<br/> * width : 80% <br/> * height : 80% <br/> * title : (空字符串) <br/> * * 参数:<br/> * width : <br/> * height : <br/> * title : <br/> * url : 必填参数 <br/> * onLoad : function 加载完窗口内容后执行<br/> * * */ createWindow : function(params){ $("<div>").css({padding:"5px"}).window({ width : params.width?params.width:"80%", height : params.height?params.height:"80%", modal:true, title : params.title?params.title:" ", href : params.url, onClose : function(){ $(this).window("destroy"); }, onLoad : function(){ if(params.onLoad){ params.onLoad.call(this); } } }).window("open"); }, closeCurrentWindow : function(){ $(".panel-tool-close").click(); }, changeItemParam : function(node,formId){ $.getJSON("/item/param/query/itemcatid/" + node.id,function(data){ if(data.status == 200 && data.data){ $("#"+formId+" .params").show(); var paramData = JSON.parse(data.data.paramData); var html = "<ul>"; for(var i in paramData){ var pd = paramData[i]; html+="<li><table>"; html+="<tr><td colspan=\"2\" class=\"group\">"+pd.group+"</td></tr>"; for(var j in pd.params){ var ps = pd.params[j]; html+="<tr><td class=\"param\"><span>"+ps+"</span>: </td><td><input autocomplete=\"off\" type=\"text\"/></td></tr>"; } html+="</li></table>"; } html+= "</ul>"; $("#"+formId+" .params td").eq(1).html(html); }else{ $("#"+formId+" .params").hide(); $("#"+formId+" .params td").eq(1).empty(); } }); }, getSelectionsIds : function (select){ var list = $(select); var sels = list.datagrid("getSelections"); var ids = []; for(var i in sels){ ids.push(sels[i].id); } ids = ids.join(","); return ids; }, /** * 初始化单图片上传组件 <br/> * 选择器为:.onePicUpload <br/> * 上传完成后会设置input内容以及在input后面追加<img> */ initOnePicUpload : function(){ $(".onePicUpload").click(function(){ var _self = $(this); KindEditor.editor(TT.kingEditorParams).loadPlugin('image', function() { this.plugin.imageDialog({ showRemote : false, clickFn : function(url, title, width, height, border, align) { var input = _self.siblings("input"); input.parent().find("img").remove(); input.val(url); input.after("<a href='"+url+"' target='_blank'><img src='"+url+"' width='80' height='50'/></a>"); this.hideDialog(); } }); }); }); } }; ``` 貌似是Controller里@RequestParam中的id一直没传进去 ,用的默认值0, 也不知道为什么会这样 ,请教一下应该怎么改。 谢谢!!
请教关于在struts2中传递参数,怎么做,谢谢
我有三个jsp,每个jsp都要填一些字段内容,我现在的做法是在每个jsp的action中将该jsp中的字段存入数据库,但这样存在两个问题,对数据库有压力,另外,在后两个jsp不是很好获得第一个jsp操作数据库时插入新的条目的id,后面就无法对应存入了。 现在,我想jsp1->jsp2>-jsp3,并在jsp3中获得3个jsp的参数,统一将这些 参数 存入数据库,请问如何传参,是否需要三个action呢,谢谢 另外问下,在数据库操作中,比如update xx value(...);之后,如何写SQL语句获得刚刚存入数据库的条目的id呢,谢谢 [b]问题补充:[/b] lovewhzlq 不过三个jsp页面之间的跳转要在同一个请求中跳转 怎么理解 能给出具体的action的配置么,谢谢 [b]问题补充:[/b] 我的前两个jsp表单都很多 [b]问题补充:[/b] lovewhzlq 那是不是三个jsp要请求三次action呀,能给出稍微具体点的配置么,谢谢 [b]问题补充:[/b] 那action的excute方法要执行三次? 可是这样的话我有些值还没传完整呢。。。 [b]问题补充:[/b] 在action中用method配置是么 另外,如果不配置方法,是不是三次执行action就执行三次excute呢 [b]问题补充:[/b] jansel 能具体讲下ScopeInterceptor么,我也想了解,没找到太合适的资源,谢谢 [b]问题补充:[/b] scopeInterceptor 主要起什么作用啊 [b]问题补充:[/b] 我上传了我的工程,数据库也包含在内,不过大家可以把登陆控制取消,改改,要不麻烦 主要有这么几个问题: 1.我在spread.action里面写了4个方法,可是从spread1.jsp->spread2.jsp就会出错,意思是没有input定义,可是我没发现action哪错啦 2.action权限拦截器貌似不起作用,直接进action还是可以,不知道怎么回事 3.登陆页面我启用了<sx:head/>,也配置了验证文件,但貌似无法异步验证,必须提交才行 spread.action [code="java"]package action; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Date; import javax.imageio.ImageIO; import org.apache.struts2.ServletActionContext; import bean.DBUtil; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class Spread extends ActionSupport { private static final long serialVersionUID = 1L; public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getTeachpoint() { return teachpoint; } public void setTeachpoint(String teachpoint) { this.teachpoint = teachpoint; } public String getLevel() { return level; } public void setLevel(String level) { this.level = level; } public String getTheme() { return theme; } public void setTheme(String theme) { this.theme = theme; } public String getMedia() { return media; } public void setMedia(String media) { this.media = media; } public String getFullname() { return fullname; } public void setFullname(String fullname) { this.fullname = fullname; } public String getKeyword() { return keyword; } public void setKeyword(String keyword) { this.keyword = keyword; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getIsbn() { return isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } public Date getWritetime() { return writetime; } public void setWritetime(Date writetime) { this.writetime = writetime; } public Date getPublictime() { return publictime; } public void setPublictime(Date publictime) { this.publictime = publictime; } public String getLength() { return length; } public void setLength(String length) { this.length = length; } public String getWidth() { return width; } public void setWidth(String width) { this.width = width; } public String getHeight() { return height; } public void setHeight(String height) { this.height = height; } public String getPages() { return pages; } public void setPages(String pages) { this.pages = pages; } public String getColoredpages() { return coloredpages; } public void setColoredpages(String coloredpages) { this.coloredpages = coloredpages; } public String getWeight() { return weight; } public void setWeight(String weight) { this.weight = weight; } public String getMaterial() { return material; } public void setMaterial(String material) { this.material = material; } public String getIntro() { return intro; } public void setIntro(String intro) { this.intro = intro; } public File[] getUpload() { return upload; } public void setUpload(File[] upload) { this.upload = upload; } public String[] getUploadContentType() { return uploadContentType; } public void setUploadContentType(String[] uploadContentType) { this.uploadContentType = uploadContentType; } public String[] getUploadFileName() { return uploadFileName; } public void setUploadFileName(String[] uploadFileName) { this.uploadFileName = uploadFileName; } public String getSavePath() { return ServletActionContext.getServletContext().getRealPath(savePath); } public void setSavePath(String savePath) { this.savePath = savePath; } public String getChennel() { return chennel; } public void setChennel(String chennel) { this.chennel = chennel; } public String getMarketprice() { return marketprice; } public void setMarketprice(String marketprice) { this.marketprice = marketprice; } public String getSaleprice() { return saleprice; } public void setSaleprice(String saleprice) { this.saleprice = saleprice; } public String getAccess() { return access; } public void setAccess(String access) { this.access = access; } private boolean copy(File src, File dst) { InputStream in = null; OutputStream out = null; try { try { in = new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE); out = new BufferedOutputStream(new FileOutputStream(dst),BUFFER_SIZE); byte[] buffer = new byte[BUFFER_SIZE]; int len = 0; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } return true; } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } catch(Exception e) { e.printStackTrace(); } return false; } private boolean checkSize(File [] files) { BufferedImage image = null; for (int i = 0; i < files.length; i++) { try { image = ImageIO.read(files[i]); } catch(IOException e) { e.printStackTrace(); } String size = null; if (image.getWidth() > 260 || image.getHeight() > 260) { size ="上传图片宽高不能超过260*260"; ActionContext.getContext().put("size",size); return false; } } return true; } private String getRealPath(String imageString) { return getSavePath() + "\\" + imageString; } public String firstStep() { System.out.println(getLanguage()); System.out.println(getTeachpoint()); System.out.println(getLevel()); System.out.println(getType()); System.out.println(getTheme()); return SUCCESS; } public String secondStep() { System.out.println(getMedia()); System.out.println(getFullname()); System.out.println(getKeyword()); System.out.println(getAuthor()); System.out.println(getIsbn()); System.out.println(getWritetime()); System.out.println(getPublictime()); System.out.println(getLength()); System.out.println(getWidth()); System.out.println(getHeight()); System.out.println(getPages()); System.out.println(getColoredpages()); System.out.println(getWeight()); System.out.println(getMaterial()); System.out.println(getIntro()); return SUCCESS; } public String thirdStep() { File [] files = getUpload(); if (!checkSize(files)) return INPUT; for (int i = 0; i < files.length; i++) { imageFileName = new Date().getTime() + uploadFileName[i].substring(uploadFileName[i].lastIndexOf(".")); File imageFile = new File(getSavePath() + "\\" + imageFileName); copy(files[i],imageFile); realPath[i] = getRealPath(imageFileName); } System.out.println(realPath[0]); System.out.println(realPath[1]); return SUCCESS; } public String forthStep() { return SUCCESS; } private String language; private String type; private String teachpoint; private String level; private String theme; private String media; private String fullname; private String keyword; private String author; private String isbn; private Date writetime; private Date publictime; private String length; private String width; private String height; private String pages; private String coloredpages; private String weight; private String material; private String intro; private static final int BUFFER_SIZE = 16 * 1024; private File[] upload; private String[] uploadContentType; private String[] uploadFileName; private String imageFileName; private String savePath; private String [] realPath = new String[2]; private String chennel; private String marketprice; private String saleprice; private String access; } [/code] struts.xml [code="java"]<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <constant name="struts.custom.i18n.resources" value="property.message" /> <!--不受权限控制的Action请求配置--> <package name="non-authority" extends="struts-default"> <action name="Login" class="action.LoginCheck"> <result name="success">/spread/spread1.jsp</result> <result name="error">/login.jsp</result> </action> </package> <package name="authority" extends="struts-default"> <interceptors> <interceptor name="authority" class="interceptor.AuthorityInterceptor" /> <interceptor-stack name="mydefault"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="authority" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="mydefault" /> <global-results> <result name="login">/login.jsp</result> </global-results> <action name="FirstStep" class="action.Spread" method="firstStep"> <result name="success">/spread/spread2.jsp</result> </action> <action name="SecondStep" class="action.Spread" method="secondStep"> <result name="success">/spread/spread3.jsp </result> </action> <action name="ThirdStep" class="action.Spread" method="thirdStep"> <result name="success">/spread/spread4.jsp </result> <result name="input">/spread/spread3.jsp </result> <interceptor-ref name="fileUpload"> <param name="allowedTypes">image/jpeg,image/pjpeg</param> <param name="maximumSize">204800</param> </interceptor-ref> <param name="savePath">/upload</param> </action> <action name="ForthStep" class="action.Spread" method="forthStep"> <result name="success">/spread/spreadSucc.jsp</result> </action> </package> </struts> [/code] 权限拦截器 [code="java"]public class AuthorityInterceptor extends AbstractInterceptor { private static final long serialVersionUID = 1L; public String intercept(ActionInvocation invocation) throws Exception { ActionContext ctx = invocation.getInvocationContext(); String user = (String)ctx.getSession().get("username"); System.out.print(user); if (user != null) { return invocation.invoke(); } System.out.print(user); ctx.put("tip", "您还没有登录,请登陆系统"); return Action.LOGIN; } }[/code]怎么才能起作用呢,而且tip值怎么显示出来 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"> <filter> <filter-name>SetCharacterEncodingFilter</filter-name> <filter-class>filter.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>SetCharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>accessFilter</filter-name> <filter-class>filter.AccessFilter</filter-class> </filter> <filter-mapping> <filter-name>accessFilter</filter-name> <url-pattern>/spread/*</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> <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> <servlet> <servlet-name>dwr</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>modelIndex.jsp</welcome-file> </welcome-file-list> </web-app> [/code] 登陆页面 [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"> <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:property value="noUser" /> <s:property value="tip" /> </div> <s:form action="Login" method="post"> <s:textfield label="%{getText('username')}" name="username" value="" cssStyle="width:150px;" /> <s:password label="%{getText('password')}" name="password" cssStyle="width:150px;" /> <sx:submit value="%{getText('login')}" validate="true" /> </s:form> </body> </html>[/code] 谢谢大家
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载 点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队 译者 | 凯隐 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
4G EPS 第四代移动通信系统
目录 文章目录目录4G 与 LTE/EPCLTE/EPC 的架构E-UTRANE-UTRAN 协议栈eNodeBEPCMMES-GWP-GWHSSLTE/EPC 协议栈概览 4G 与 LTE/EPC 4G,即第四代移动通信系统,提供了 3G 不能满足的无线网络宽带化,主要提供数据(上网)业务。而 LTE(Long Term Evolution,长期演进技术)是电信领域用于手机及数据终端的高速无线通...
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)【导读】近日,腾讯开源动作不断,相继开源了分布式消息中间件TubeMQ,基于最主流的 OpenJDK8开发的Tencent Kona JDK,分布式HTAP数据库 TBase,企业级容器平台TKEStack,以及高性能图计算框架Plato。短短一周之内,腾讯开源了五大重点项目。其中,TubeMQ是腾讯大数据平台部门应用的核心组件,...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车?某胡同口的煎饼摊一年能卖出多少个煎饼?深圳有多少个产品经理?一辆公交车里能装下多少个乒乓球?一个正常成年人有多少根头发?这类估算问题,被称为费米问题,是以科学家费米命名的。为什么面试会问这种问题呢?这类问题能把两类人清楚地区分出来。一类是具有文科思维的人,擅长赞叹和模糊想象,它主要依靠的是人的第一反应和直觉,比如小孩...
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
MySQL数据库总结
一、数据库简介 数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库。 典型特征:数据的结构化、数据间的共享、减少数据的冗余度,数据的独立性。 关系型数据库:使用关系模型把数据组织到数据表(table)中。现实世界可以用数据来描述。 主流的关系型数据库产品:Oracle(Oracle)、DB2(IBM)、SQL Server(MS)、MySQL(Oracle)。 数据表:数...
相关热词 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件 c#注册dll文件 c#安装.net
立即提问