jsp页面判断是否存在?
 我的做的项目其中一个jsp页面中的<table>标签里面的<td data-date="2016-06-23">大概就是这样一个自定义属性,然后有什么方法能够让我赋予的值与 data-date的值进行比较,如果等于就得到这个<td>,求各位大神赐教!谢谢

2个回答

最简单的办法,直接用jquery取出td的值,$("td data-date").val().然后取出来的这个值与你的值进行比较,
或者你可以用/c:if

假定,你想找2016-06-23,那么在你敲完这几个数字,按了确定后,触发一个事件,
这个事件要做的:1.拿到你输入的日期,2.扫描table里面的所有td,一一匹配,匹配成功就返回这个td

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何在JSP页面用EL判断HashSet中是否存在某值
本来tomcat7是支持直接EL取到Set对象然后调用contains方法的。 无奈生产环境使用的是tomcat6,不支持这种方式 想写自定义标签,网上找的文档都是0几年的,现在这种需求都是用什么方法解决的 我目前是要做一个列表显示全部的可选内容,Set中存的是对象中已经存在的选项 如果已经存在就打钩,我用这种方式进行处理的
js如何判断指定的页面是否存在
[code="java"] <html> <head> <title>My JSP 'a.jsp' starting page</title> <script language="javascript"> var target = null; function createTarget(){ if(window.ActiveXObject){ target = new ActiveXObject("Microsoft.XMLHTTP") ; }else if(window.XMLHttpRequest){ target = new XMLHttpRequest(); } } function GetURL(url){ createTarget(); target.onreadystatechange = function(){ if(target.readyState==4){ if(target.status==200){ alert("页面存在"); }else { alert("页面不存在"); } } } target.open("GET",url,true); target.send(null); } </script> </head> <body> <input type="button" onclick="GetURL('http://www.baidu.com')" value="该页面存在"> <input type="button" onclick="GetURL('http://www.error.com/error.html')" value="该页面不存在"></input> </body> </html> [/code] 如上代码,意思就是在点击一个连接时侯判断页面是否存在! 如果存在就打开,不存在就请求servlet! 上面代码在ie中没有问题! 但是在火狐或标准dom浏览器总是显示“页面不存在” 我试着添加测试代码,显示http返回的状态码! 在ie中可以显示200 但是在火狐中总是显示0! 火狐中会报target.send(null); 这行的错误! 在下不才,请各位朋友看下!
jsp页面调用mysql的存储过程,一直获取不到total值,只能跳到error页面
![图片说明](https://img-ask.csdn.net/upload/201712/17/1513473208_748921.png) ![图片说明](https://img-ask.csdn.net/upload/201712/17/1513473223_65841.png) ![图片说明](https://img-ask.csdn.net/upload/201712/17/1513473235_364215.png) ``` <%@ page contentType="text/html" language="java" import="java.sql.*" errorPage="" pageEncoding="utf-8"%> <!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> </head> <body> <% //获取提交的用户名与密码 String username=""; String pwd=""; if (request.getParameter("username")!=null) username=request.getParameter("username"); if (request.getParameter("pwd")!=null) pwd=request.getParameter("pwd"); try { //1.注册数据库引擎 String JDriver="com.mysql.jdbc.Driver";//SQL数据库引擎 Class.forName(JDriver); //2.连接数据库 //String url = "jdbc:mysql://localhost:3306;DatabaseName=class1"; String url = "jdbc:mysql://localhost:3306/class1"; Connection conn = DriverManager.getConnection(url, "root", "123456"); CallableStatement cs; //3.通过调用存储过程查询并执行 cs = conn.prepareCall("{call userlogin(?,?,?)}"); cs.setString(1,username); cs.setString(2,pwd); cs.registerOutParameter(3, java.sql.Types.INTEGER); cs.execute(); //4.处理查询结果 int num=0;//默认为零,即无此用户 num=cs.getInt(3); if (num==1)//存在该用户 { if(session.getAttribute("visited")==null){//判断是否session级变量visited为空,为空代表是第一次操作 session.setAttribute("visited","y");//置visited为可访问 session.setMaxInactiveInterval(60*60*24); response.sendRedirect("question.jsp");//跳转到查询页面 } else//说明已将viseited置为可访问,直接跳转到查询页面 response.sendRedirect("question.jsp"); } else//不存在该用户,跳转到重新注册页面 { response.sendRedirect("error.html"); } conn.close();//关闭连接对象 } catch(Exception ex) { out.println(ex.toString());//捕捉错误 } %> </body> </html> ``` ![图片说明](https://img-ask.csdn.net/upload/201712/17/1513473535_398185.png) ![图片说明](https://img-ask.csdn.net/upload/201712/17/1513473547_607296.png) 急求!!!!
如何从jsp页面向mysql按条件更新数据
代码如下 ``` <% String ID = new String(request.getParameter("dId").getBytes("ISO8859_1"),"UTF-8"); String AIS = new String(request.getParameter("AIS").getBytes("ISO8859_1"),"UTF-8"); try{ Class.forName("com.mysql.jdbc.Driver"); String url = "XXXXXXXXX"; String username = "XXXXXXX"; String password = "XXXXXXX"; Connection conn = DriverManager.getConnection(url,username,password); String isExist = "select * from newshipinfo where newshipinfo.AIS = '"+AIS+"'"; PreparedStatement pstmt = conn.prepareStatement(isExist); ResultSet rs = pstmt.executeQuery(); if(rs.next()){ out.print("该数据已存在,请不要重复添加!"); }else{ String sql = "insert into newshipinfo(AIS) values (?) where ID = '"+ID+"'"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1,AIS); int row = ps.executeUpdate(); if(row >0){ out.print("数据添加成功"); } ps.close(); conn.close(); } }catch(Exception e){ out.print("数据添加失败!"); e.printStackTrace(); } %> ``` 这个页面的目的是将前一个页面所提交的数据(ID号与AIS的值)填写到数据库里进行数据更新,数据库里AIS的初始值均为0,现在把页面的值传进去变成1或者2。传之前会判断数据库里AIS的值是不是1或者2,若是则提示不要重复输入。 现在值可以传到这个页面没有问题,就是无法传入数据库,老是报这个错 ``` You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where ID = '12259'' at line 1 ``` 是sql语句的错误吗,想请教下怎么修改代码。
求助!jsp网页在登陆页面不跳转不报错
struts框架的jsp web工程,login.jsp可以显示,点击登陆之后页面没有任何变化,也不报错。如果不输或者错输用户名和密码,也没有任何错误提示,现在就是停在登陆页面,求大神帮忙看看~感激不尽 LoginAction如下: package cn.com.syis.hisol.hrms.action.login; import java.util.Locale; import org.springframework.beans.factory.annotation.Autowired; import cn.com.syis.hisol.hrms.action.BaseAction; import cn.com.syis.hisol.hrms.common.CommonConst; import cn.com.syis.hisol.hrms.common.MessageErrorConst; import cn.com.syis.hisol.hrms.model.AdminUserModel; import cn.com.syis.hisol.hrms.service.LoginService; import cn.com.syis.hisol.hrms.util.CommonStringUtil; import cn.com.syis.hisol.hrms.util.MD5; /** * 用户登录退出用Action * * * */ public class LoginAction extends BaseAction { /** 用户ID */ private String userId; /** 密码 */ private String pswd; /** 登录Service */ @Autowired private LoginService loginService; /** * 取得用户ID * @return 用户ID */ public String getUserId() { return userId; } /** * 设置用户ID * @param userId 用户ID */ public void setUserId(String userId) { this.userId = userId; } /** * 取得密码 * @return 密码 */ public String getPswd() { return pswd; } /** * 设置密码 * @param pswd 密码 */ public void setPswd(String pswd) { this.pswd = pswd; } /** * 首页初期化 * * @return 迁移地址 * @throws Exception 异常 */ public String init() throws Exception { return SUCCESS; } /** * 登录处理 * * @return 迁移地址 * @throws Exception 异常 */ public String login() throws Exception { // 检查用户是否输入用户ID if (!CommonStringUtil.isValidForTrim(userId)) { // 提示错误信息:请输入员工用户ID addError(MessageErrorConst.HRM00000001E); // 返回到登录画面 return ERROR; } // 检查用户是否输入密码 if (!CommonStringUtil.isValidForTrim(pswd)) { // 提示错误信息:请输入密码 addError(MessageErrorConst.HRM00000002E); // 返回到登录画面 return ERROR; } // 检索用户信 息 AdminUserModel adminUserModel = loginService.searchAdminUserInfo(userId); // 判断用户信息是否存在 if (adminUserModel == null || adminUserModel.getStatus() == 0) { // 提示错误信息:您输入的员工用户ID不存在,请重新输入 addError(MessageErrorConst.HRM00000003E); // 返回到登录画面 return ERROR; } // MD5加密处理 MD5 m = new MD5(); // 判断用户密码是否正确 if (!m.getMD5ofStr(pswd).equals(adminUserModel.getPswd())) { // 提示错误信息:您输入的密码错误,请重新输入 addError(MessageErrorConst.HRM00000004E); // 返回到登录画面 return ERROR; } // 判断用户是否已被锁定 if (adminUserModel.getStatus() == 9) { // 提示错误信息:您的账号已经被锁定,请联系系统管理员 addError(MessageErrorConst.HRM00000005E); // 返回到登录画面 return ERROR; } // 定义默认语言 Locale lo = Locale.CHINA; // 向Session中放入默认语言 setSessionValue("WW_TRANS_I18N_LOCALE", lo); setSessionValue(CommonConst.SESSION_LOGIN_USER_INFO, adminUserModel); return SUCCESS; } /** * 退出处理 * * @return 迁移地址 * @throws Exception 异常 */ public String logout() throws Exception { // 清除Session信息 clearAllSession(); // 迁移到登录画面 return SUCCESS; } }
javascript生成的树形目录如何把读取的id传递给jsp页面
我用js读取数据库生成一个树形目录,树形目录做好了,可是不知道怎么把节点的id传到jsp页面或action里,最好action能通过request.getAttribute()得到所点节点的id,还有就是不知道如何像有些论坛上一个,点不同的节点,右面显示不同的jsp,小弟第一次做,请指教,谢谢,下面是我用的js代码: var Tree = new function() { this._url = "tree.jsp"; //用于请求数据的服务器页面地址 this._openMark = "<img src='images/nolines_minus.gif'/>"+"<img src='images/folderopen.gif'/>"; //目录节点处于展开状态时的标识 this._closeMark = "<img src='images/nolines_plus.gif'/>"+"<img src='images/folder.gif'/>"; //目录节点处于关闭状态时的标识 this._itemMark = "<img src='images/page.gif'/>"; //非目录节点标识 this._initId = "treeInit"; //树形目录初始div标识 this._rootData = "IS安全等级保护基础库"; //根节点文字信息 this._boxSuffix = "_childrenBox"; //子节点容器后缀 this._folderType = "folder"; //目录节点类型变量 this._itemType = "item"; //非目录节点类型变量 //初始化根节点 this.init = function() { var initNode = document.getElementById(this._initId); //获取初始div var _node = document.createElement("div"); //创建新div作为根节点 _node.id = "1"; //根节点id为0 _node.innerHTML = this.createItemHTML(_node.id, this._folderType, this._rootData); initNode.appendChild(_node); //将根节点加入初始div } //获取给定节点的子节点 this.getChildren = function(_parentId) { //获取页面子节点容器box var childBox = document.getElementById(_parentId + this._boxSuffix); //如果子节点容器已存在则直接设置显示状态,否则从服务器获取子节点信息 if (childBox) { var isHidden = (childBox.style.display == "none"); //判断当前状态是否隐藏 childBox.style.display = isHidden?"":"none"; //隐藏则显示,如果显示则变为隐藏 //根据子节点的显示状态修改父节点标识 var _parentNode = document.getElementById(_parentId); _parentNode.firstChild.innerHTML = isHidden?this._openMark:this._closeMark; } else { var xmlHttp=this.createXmlHttp(); //创建XmlHttpRequest对象 xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4) { //调用addChildren函数生成子节点 Tree.addChildren(_parentId, xmlHttp.responseXML); } } xmlHttp.open("GET", this._url + "?parentId=" + _parentId, true); xmlHttp.send(null); } } //根据获取的xmlTree信息,设置指定节点的子节点 this.addChildren = function(_parentId, _data) { var _parentNode = document.getElementById(_parentId); //获取父节点 _parentNode.firstChild.innerHTML = this._openMark; //设置节点前标记为目录展开形式 var _nodeBox = document.createElement("div"); //创建一个容器,称为box,用于存放所有子节点 _nodeBox.id = _parentId + this._boxSuffix; //容器的id规则为:在父节点id后加固定后缀 _nodeBox.className = "box"; //样式名称为box,div.box样式会对此节点生效 _parentNode.appendChild(_nodeBox); //将子节点box放入父节点中 var _children = _data.getElementsByTagName("tree")[0].childNodes; //获取所有item节点 var _child = null; //声明_child变量用于保存每个子节点 var _childType = null; //声明_childType变量用于保存每个子节点类型 for(var i=0; i<_children.length; i++) { //循环创建每个子节点 _child = _children[i]; _node = document.createElement("div"); //每个节点对应一个新div _node.id = _child.getAttribute("id"); //节点的id值就是获取数据中的id属性值 _childType = _child.getAttribute("isFolder")=="true"?this._folderType:this._itemType; //设置子节点类型 //根据节点类型不同,调用createItemHTML创建节点内容 if (_childType == this._itemType) { //非目录节点在最后多传一个link数据,用于点击后链接到新页面 _node.innerHTML = this.createItemHTML(_node.id, _childType, _child.firstChild.data, _child.getAttribute("link")); } else { //目录节点只需传递id,节点类型,节点数据 _node.innerHTML = this.createItemHTML(_node.id, _childType, _child.firstChild.data); } _nodeBox.appendChild(_node); //将创建好的节点加入子节点box中 } } //创建节点的页面片断 this.createItemHTML = function(itemId, itemType, itemData, itemLink) { //根据节点类型不同,返回不同的HTML片断 if (itemType == this._itemType) { //非目录节点的class属性以item开头,并且onclick事件调用Tree.clickItem函数 return '<span class="itemMark">'+this._itemMark+'</span>' + '<a href="Frame.do" style="text-decoration:none" target="main"><span class="item" >' +itemData+'</span></a>'; } else if (itemType == this._folderType) { //目录节点的class属性以folder开头,并且onclick事件调用Tree.getChildren函数 return '<span class="folderMark" onclick="Tree.getChildren(\'' + itemId + '\')">' + this._closeMark + '</span>' + '<span class="folder" onclick="Tree.getChildren(\'' + itemId + '\')">' + itemData + '</span>' } } //点击叶子节点后的动作,目前只是弹出对话框,可修改为链接到具体的页面 this.clickItem = function(_link) { return ; } //用于创建XMLHttpRequest对象 this.createXmlHttp=function() { var xmlHttp = null; //根据window.XMLHttpRequest对象是否存在使用不同的创建方式 if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); //FireFox、Opera等浏览器支持的创建方式 } else { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式 } return xmlHttp; } }
jsp上传文件页面报无法解析的编译问题
index.jsp <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <html> <head> <title>带进度条的文件上传</title> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <link href="CSS/style.css" rel="stylesheet"> <script language="javascript" src="JS/AjaxRequest.js"></script> <script language="javascript"> //此处需要加&nocache="+new Date().getTime(),否则将出现进度不更新的情况 function getProgress(){ var loader=new net.AjaxRequest("showProgress.jsp?nocache="+new Date().getTime(),deal_p,onerror,"GET"); } function onerror(){ alert("上传文件出错!"); } function deal_p(){ var h=this.req.responseText; h=h.replace(/\s/g,""); //去除字符串中的Unicode空白符 document.getElementById("progressPercent").style.display=""; //显示百分比 progressPercent.innerHTML=h+"%"; //显示完成的百分比 document.getElementById("progressBar").style.display="block"; //显示进度条 document.getElementById("imgProgress").width=h*(255/100); //显示完成的进度 } function deal(form){ form.submit(); //提交表单 timer=window.setInterval("getProgress()",500); //每隔500毫秒获取一次上传进度 } </script> </head> <body> <form name="form1" enctype="multipart/form-data" method="post" action="UpLoad?action=uploadFile"> <table width="500" height="289" border="0" align="center" cellpadding="0" cellspacing="0" background="images/bg.jpg"> <tr> <td width="61" rowspan="2">&nbsp;</td> <td width="439" align="center"> <table width="80%" height="190" border="0" cellpadding="0" cellspacing="0"> <tr> <td align="center">&nbsp;</td> </tr> <tr> <td height="34" style="color:#FFFFFF">请选择上传的文件:</td> </tr> <tr> <td height="42"><input name="file" type="file" size="42"></td> </tr> <tr> <td height="50" style="color:#FFFFFF"> 注:文件大小请控制在50M以内。</td> </tr> <tr> <td height="29" align="center" style="color:#FFFFFF"><div id="progressBar" class="prog_border" align="left"><img src="images/progressBar.jpg" width="0" height="13" id="imgProgress"></div>  <span id="progressPercent" style="width:40px;display:none">0%</span></td> </tr> <tr> <td height="29" align="center"><img src="images/shangchuan.gif" width="61" height="23" onClick="deal(form1)"> <img src="images/chongzhi.gif" width="61" height="23" onClick="form1.reset();">&nbsp; </td></tr> </table> </td> </tr> </table> </form> </body> </html> upload.java package com.wgh.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; 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 org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * * @author administrator */ public class UpLoad extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); if ("uploadFile".equals(action)) { this.uploadFile(request, response); // 上传文件 } } public void uploadFile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=GBK"); request.setCharacterEncoding("GBK"); HttpSession session = request.getSession(); session.setAttribute("progressBar", 0); // 定义指定上传进度的Session变量 String error = ""; int maxSize = 50 * 1024 * 1024; // 单个上传文件大小的上限 DiskFileItemFactory factory = new DiskFileItemFactory(); // 基于磁盘文件项目创建一个工厂对象 ServletFileUpload upload = new ServletFileUpload(factory); // 创建一个新的文件上传对象 try { List items = upload.parseRequest(request);// 解析上传请求 Iterator itr = items.iterator();// 枚举方法 while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); // 获取FileItem对象 if (!item.isFormField()) {// 判断是否为文件域 if (item.getName() != null && !item.getName().equals("")) {// 判断是否选择了文件 long upFileSize = item.getSize(); // 上传文件的大小 String fileName = item.getName(); // 获取文件名 // System.out.println("上传文件的大小:" + item.getSize()); if (upFileSize > maxSize) { error = "您上传的文件太大,请选择不超过50M的文件"; break; } // 此时文件暂存在服务器的内存中 File tempFile = new File(fileName);// 构造临时对象 // String savePath=tempFile.getName(); // //返回上传文件在客户端的完整路径名称 // request.setAttribute("filename", savePath); File file = new File(request.getRealPath("/upload"), tempFile.getName()); // 获取根目录对应的真实物理路径 InputStream is = item.getInputStream(); int buffer = 1024; // 定义缓冲区的大小 int length = 0; byte[] b = new byte[buffer]; double percent = 0; FileOutputStream fos = new FileOutputStream(file); while ((length = is.read(b)) != -1) { percent += length / (double) upFileSize * 100D; // 计算上传文件的百分比 fos.write(b, 0, length); // 向文件输出流写读取的数据 session.setAttribute("progressBar", Math .round(percent)); // 将上传百分比保存到Session中 } fos.close(); Thread.sleep(1000); // 线程休眠1秒 } else { error = "没有选择上传文件!"; } } } } catch (Exception e) { e.printStackTrace(); error = "上传文件出现错误:" + e.getMessage(); } if (!"".equals(error)) { request.setAttribute("error", error); request.getRequestDispatcher("error.jsp") .forward(request, response); } else { request.setAttribute("result", "文件上传成功!"); request.getRequestDispatcher("upFile_deal.jsp").forward(request, response); } } } 问题 java.lang.Error: 无法解析的编译问题: 无法解析导入 org.apache.commons.fileupload.disk 无法解析导入 org.apache.commons.fileupload.servlet DiskFileItemFactory 无法解析为类型 DiskFileItemFactory 无法解析为类型 ServletFileUpload 无法解析为类型 ServletFileUpload 无法解析为类型 com.wgh.servlet.UpLoad.<init>(UpLoad.java:15) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) java.lang.Class.newInstance(Class.java:442) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879) org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:610) org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1777) java.lang.Thread.run(Thread.java:745) 求救
关于springmvc与JSP之间的问题
首先 我在springmvc 配置文件 配置了默认的视图解析器 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"></property> <property name="suffix" value=".jsp"></property> </bean> 现在我写了一个注册页面 ![图片说明](https://img-ask.csdn.net/upload/201505/13/1431487017_666135.png) 输入用户名 可以点击那个【是否被占用】来判断用户名是不是可以用, 当然这个就跳进了 springmvc的控制器中,但是我不想页面发生改变的啊,只是想弹出一个框 来提示用户 可以注册 或者 不可以注册 @RequestMapping("/verifyUser.html") public String verifyUser(HttpServletRequest request){ boolean isExist = registerService.queryExist(request.getParameter("userName")); if(isExist){ System.out.println("已经存在用户"); //已经存在用户 return "error"; }else{ System.out.println("可以注册"); return "register"; } } 这是控制器里的方法,如果用了return的话 就跳转到视图解析器里了 但是我不想这么做 求大神 帮忙出出主意 帮个忙
java查询数据库中的数据会输出,输出的不是我的数据????
# ```数据封装在build,builds中 可是输出的不是数据库中的数据而是 ![图片说明](https://img-ask.csdn.net/upload/202004/02/1585822586_24417.jpg) # DormBuildDaoImpl.java package zj.shizhan.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import zj.shizhan.bean.DormBuild; import zj.shizhan.util.ConnectionFactory; public class DormBuildDaoImpl implements DormBuildDao { @Override public DormBuild findByName(String dormBuildName) { //获取连接(数据库地址 用户名 密码) Connection connection = ConnectionFactory.getConnection(); try { String sql = "select * from dormbuild where dormBuildName = ? "; //执行SQL语句 获取集装箱 或者说是 车 PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, dormBuildName); ResultSet rs = preparedStatement .executeQuery(); //因为查询出来的信息包括表头信息,所以指针下移一行,看是否有查询出的数据 //如有数据,就进入循环体封装该行数据 while (rs.next()) { DormBuild build = new DormBuild(); build.setDormBuildId(rs.getInt("dormBuildId")); build.setDormBuildName(rs.getString("dormBuildName")); build.setDetail(rs.getString("detail")); return build; } } catch (SQLException e) { e.printStackTrace(); } return null; } @Override public void save(DormBuild build) { //获取连接(数据库地址 用户名 密码) Connection connection = ConnectionFactory.getConnection(); try { String sql = "INSERT INTO dormbuild(dormBuildName,detail)VALUES(?,?)"; //执行SQL语句 获取集装箱 或者说是 车 PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, build.getDormBuildName()); preparedStatement.setString(2, build.getDetail()); preparedStatement .executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } @Override public List<DormBuild> find() { //获取连接(数据库地址 用户名 密码) Connection connection = ConnectionFactory.getConnection(); try { String sql = "select * from dormbuild "; //执行SQL语句 获取集装箱 或者说是 车 PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet rs = preparedStatement .executeQuery(); //因为查询出来的信息包括表头信息,所以指针下移一行,看是否有查询出的数据 //如有数据,就进入循环体封装该行数据 List<DormBuild> builds = new ArrayList<DormBuild>(); while (rs.next()) { DormBuild build = new DormBuild(); build.setDormBuildId(rs.getInt("dormBuildId")); build.setDormBuildName(rs.getString("dormBuildName")); build.setDetail(rs.getString("detail")); builds.add(build); } return builds; } catch (SQLException e) { e.printStackTrace(); } return null; } @Override public DormBuild findById(Integer dormBuildId) { //获取连接(数据库地址 用户名 密码) Connection connection = ConnectionFactory.getConnection(); try { String sql = "select * from dormbuild where dormBuildId = ? "; //执行SQL语句 获取集装箱 或者说是 车 PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1, dormBuildId); ResultSet rs = preparedStatement .executeQuery(); //因为查询出来的信息包括表头信息,所以指针下移一行,看是否有查询出的数据 //如有数据,就进入循环体封装该行数据 while (rs.next()) { DormBuild build = new DormBuild(); build.setDormBuildId(rs.getInt("dormBuildId")); build.setDormBuildName(rs.getString("dormBuildName")); build.setDetail(rs.getString("detail")); return build; } } catch (SQLException e) { e.printStackTrace(); } return null; } @Override public void update(DormBuild build ) { //获取连接(数据库地址 用户名 密码) Connection connection = ConnectionFactory.getConnection(); try { String sql = "UPDATE dormbuild SET dormBuildName = ?,detail = ? WHERE dormBuildId = ?"; //执行SQL语句 获取集装箱 或者说是 车 PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, build.getDormBuildName()); preparedStatement.setString(2, build.getDetail()); preparedStatement.setInt(3, build.getDormBuildId()); //执行更新 preparedStatement .executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } } ``` # DormBuildServlet.java ``` package zj.shizhan.servlet; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import zj.shizhan.bean.DormBuild; import zj.shizhan.service.DormBuildService; import zj.shizhan.service.DormBuildServiceImpl; /** * Servlet implementation class DormBuildServlet */ @WebServlet("/dormBuild.action") public class DormBuildServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public DormBuildServlet() { super(); } /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); String action = request.getParameter("action"); //通过request.getParameter("id")方式获取的值都是String类型的 String dormBuildId = request.getParameter("dormBuildId"); System.out.println("action:"+action); DormBuildService dormBuildService = new DormBuildServiceImpl(); if(action !=null & action.equals("list")) { List<DormBuild> builds = new ArrayList<DormBuild>(); if( dormBuildId== null || dormBuildId.equals("")) { //查询所有宿舍楼信息,跳转到宿舍楼列表页 builds = dormBuildService.find(); }else if(dormBuildId != null && !dormBuildId.equals("")) { //点击查询按钮搜索某一栋宿舍楼的信息 DormBuild build = dormBuildService.findById(Integer.parseInt(dormBuildId)); builds.add(build); System.out.println("build:"+build); } //查询所有宿舍楼。在select中遍历 List<DormBuild> buildSelects = dormBuildService.find(); request.setAttribute("buildSelects", buildSelects); request.setAttribute("dormBuildId", dormBuildId); System.out.println("builds:"+builds); request.setAttribute("builds", builds); request.getRequestDispatcher("BuildList.jsp").forward(request, response); }else if (action !=null & "preAdd".equals(action)) { //表示跳转到宿舍楼添加页面 request.getRequestDispatcher("AddOrAlterBuild.jsp").forward(request, response); }else if (action !=null & "save".equals(action)) { //保存数据 String n = request.getParameter("dormBuildName"); String dormBuildName = new String(n.getBytes("ISO-8859-1"), "utf-8"); String m = request.getParameter("detail"); String detail = new String(m.getBytes("ISO-8859-1"), "utf-8"); System.out.println("dormBuildName:"+dormBuildName+"detail:"+detail+"id:"+dormBuildId); //判断宿舍楼名字是否已存在 DormBuild dormBuild = dormBuildService.findByName(dormBuildName); System.out.println("dormBuildName:"+dormBuildName); System.out.println("id2:"+dormBuildId); if(dormBuildId !=null && !"".equals(dormBuildId)) { System.out.println("id3:"+dormBuildId); //修改 if (dormBuild != null && !dormBuild.getDormBuildId().equals(Integer.parseInt(dormBuildId))) { request.setAttribute("error", "该宿舍楼已存在"); //格局宿舍楼id,查询宿舍楼 DormBuild build = dormBuildService.findById(Integer.parseInt(dormBuildId)); //保存宿舍楼信息,到前端页面展示 request.setAttribute("build", build); request.getRequestDispatcher("AddOrAlterBuild.jsp").forward(request, response); }else { dormBuild = dormBuildService.findById(Integer.parseInt(dormBuildId)); dormBuild.setDormBuildName(dormBuildName); dormBuild.setDetail(detail); dormBuildService.update(dormBuild); //更新完成后,跳转到宿舍楼管理列表页,查询所有宿舍楼 List<DormBuild> builds = dormBuildService.find(); request.setAttribute("builds", builds); request.getRequestDispatcher("BuildList.jsp").forward(request, response); } }else { //保存 System.out.println("id4:"+dormBuildId); if (dormBuild != null) { //该宿舍楼已存在 request.setAttribute("error", "该宿舍楼已存在"); request.getRequestDispatcher("AddOrAlterBuild.jsp").forward(request, response); }else { //该宿舍楼已不存在 DormBuild build = new DormBuild(); build.setDormBuildName(dormBuildName); build.setDetail(detail); dormBuildService.save(build); List<DormBuild> builds = dormBuildService.find(); request.setAttribute("builds", builds); request.getRequestDispatcher("BuildList.jsp").forward(request, response); } } }else if (action !=null & "preUpdate".equals(action)) { //格局宿舍楼id,查询宿舍楼 DormBuild build = dormBuildService.findById(Integer.parseInt(dormBuildId)); System.out.println("id1:"+dormBuildId); //保存宿舍楼信息,到前端页面展示 request.setAttribute("build", build); //表示跳转到宿舍楼修改页面 request.getRequestDispatcher("AddOrAlterBuild.jsp").forward(request, response); } } } ``` # DormBuild.java ``` package zj.shizhan.bean; public class DormBuild { private Integer dormBuildId; private String dormBuildName; private String detail; public DormBuild() { super(); } public DormBuild(Integer dormBuildId,String dormBuildName, String detail) { super(); this.dormBuildId = dormBuildId; this.dormBuildName = dormBuildName; this.detail = detail; } public String getDormBuildName() { return dormBuildName; } public void setDormBuildName(String dormBuildName) { this.dormBuildName = dormBuildName; } public String getDetail() { return detail; } public void setDetail(String detail) { this.detail = detail; } public Integer getDormBuildId() { return dormBuildId; } public void setDormBuildId(Integer dormBuildId) { this.dormBuildId = dormBuildId; } } ```
一个JSP页面勾选左侧复选框的树,右侧出现勾选项新组成的树
![图片说明](https://img-ask.csdn.net/upload/201712/04/1512380794_611261.png) <script type="text/javascript"> function appendnodes(){ var k= getTreeSelected(); /* var node = $('#tt').tree('getselected'); */ var nodes = $('#tree').tree('getChecked'); /* alert(nodes) */ $('#tt').tree('append',{ //partent:node.taget, data:nodes }); } function removenodes(){ var k= getTreeSelected(); /* var node = $('#tt').tree('getselected'); */ var nodes = $('#tree').tree('getChecked'); /* alert(nodes) */ $('#tt').tree('remove',{ //partent:node.taget, data:nodes }); } //debugger;//debugger 语句用于停止执行 JavaScript,并调用 (如果可用) 调试函数。 //获原始树结构所选节点的数据数组 function getTreeSelected() { var nodes = $('#tree').tree('getChecked'); var arr = new Array(); //向arr数组尾部逐一追加nodes[]元素 for (var i = 0; i < nodes.length;i++) { arr.push(nodes[i]); myFuc(nodes[i]); } return arr; //内部递归函数 function myFuc(n) { var parent = $('#tree').tree('getParent', n.target); if (parent == null) return; if (isExistItem(parent)) return; arr.push(parent); myFuc(parent); } //验证节点是否已存在数组中 function isExistItem(item) { var flag = false;//定义标记,用于判断 for (var i = 0; i < arr.length;i++) { if (arr[i] == item) { flag = true; break; } } return flag; } } </script> ``` ```
J2SE基础思考题........菜鸟问题.....................
是这样的,闲来无事就随便写了一个例子,大概的结构如下 1.首先我有一张表 Person 这个表显示人员的信息。 2.其次,我在业务层判断这张表是否合法.其实就是判断表中是否有信息。 3.最后在Action当中根据业务层传来的结果负责转向。 然后我查询到了Person这张表,把所有数据装入了ArrayList里面,可是这时候在业务层我判断了ArrayList.size()是不是等于0,如果等于0的话就返回false,让Action跳转到Error.jsp.如果成功就返回true,页面跳转到Success.jsp....可是假如最初Person这张表是确实的查询到了,只是表里面没有数据,但并不能代表压根没有查询到数据.这个时候其实是应该跳转到Success.jsp页面然后输出“占无数据”的信息。而不是仅仅使用ArrayList的size()方法去简单的判断表中无数据就跳转到错误页面。 好吧,如果这里必须使用ArrayList中得方法去合理的判断(注意是必须使用ArrayList不能使用其它集合类):假设如果查询到了表或者虽然查询到了表但是表中没有数据都应该返回Success.jsp,只有当没有查询到表时才返回Error.jsp 该怎么做?没错很多人或许想到只要查询没有异常,就都转向到Success.jsp 可是系统总会存在隐患(比如某些特殊原因即使没有查询到表,程序有时也不会报异常)所以我认为这种判断并不安全。 好久没上了,发现没分了。。。不好意思。 不知道谁有更好的办法。。。抛开理论设计与业务逻辑,只谈用ArrayList如何解决该问题?
关于Acegi 在 复合环境下的奇妙错误,请教!!
首先简单描述下项目的环境 开发环境: Tomcat 6.0 + apache2.2 + eclipse3.4 + jdk 6 正式环境: Tomcat 6.0 群集 + apache2.2 + jk mod + Echcache 页面缓存 + jdk 6 [b]注意: 正式环境是在一台机器上,配置 apache 和多个 tomcat[/b] Acegi 1.0.7 版本 Acegi 设定的权限管控为 所有页面都可以访问,但是填写资料,需要登陆操作 首页是 index.jsp , 其他链接,均为 ***.action 的方式 首页的登陆框 实现 acegi 的 ajax 登陆操作,登陆成功,登陆框会切换成 用户名 + 欢迎词 + 退出,登陆不成功,会提示密码或帐号错误,继续登陆。 在开发环境下,一切正常。 部署到正式环境后,出现下面两种错误: 1、输入用户名密码后,登陆成功,但是 登陆框不会切换,点击任何一个栏目进入后,在页面顶部会显示 欢迎 用户名 (表示登陆成功,如果登陆不成功,这里会显示 : 登陆 注册 的链接 ) 2、由于正式环境采用了 apache + jk + tomcat 集群 的方式, 在 worker 的配置中,设定了 sticky_session = 1。 其他配置属于正常配置 ,这里出现了一个奇怪的事情: 第一次访问首页时, 登陆框会显示: 欢迎 某某某 的字样,也就是是已经登陆了,但是我还没有登陆,而且 某某某 的用户名是随机显示的,当点击 个人资料时,却又跳转到 登陆画面,显然,当前的这个 session 并未登陆成功,还是需要登陆操作,登陆成功后 , 任何页面的顶部都会正确显示 用户名,只有 index.jsp 页面不会正常显示。 页面顶部采用 header.jsp 页面编写, 在查看是否有权限时,是通过 <authz:authorize ifAllGranted="ANONYMOUS"> 这样的写法判断是否有用户登陆,然后获取用户名,任何情况下,都不会出错,首页也是同样的写法,可是,却会出现以上问题。。 请教各位。。是不是因为复合环境下,会出现以上错误? 我做过如下测试: 1、将 集群的 tomcat 关闭到只剩下一个,然后测试, 不会出现 别人的用户名出现在 index.jsp 页面, 但是登陆依旧存在问题 2、将 header.jsp 的代码 copy 到 index.jsp 页面,还是无法起作用 3、将 echcache 的页面缓存关闭, 发现问题好转,是否 页面缓存会让 index.jsp 页面无法正常刷新? 另外,正式环境是不能关闭 页面缓存,效率会差很多。。。 还请各位指点!!
请问doPost和doGet方法有什么不同,为什么例程里的方法写在doPost里,我的代码只能写在doGet
简单的说,就是同样的代码,例程里写在doPost()里 我的代码只能写在doGet()里,写在doPost()里不会生效 ![图片说明](https://img-ask.csdn.net/upload/201912/16/1576464697_537852.png) ![图片说明](https://img-ask.csdn.net/upload/201912/16/1576464706_339981.png) ++++++++++++++++++++++++++++++++++++++++++++++ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 1、设置request编码 req.setCharacterEncoding("utf-8"); // 2、获取 jsp页面 中对应的参数,注意区分大小写 String username = req.getParameter("username"); String password = req.getParameter("password"); String checkCode = req.getParameter("checkCode"); // 3、获取 CheckCodeServlet.java 生成的验证码 // 注意,getAttribute() 里的参数是要存在的,CheckCodeServlet那里是有的 HttpSession session = req.getSession(); // Object checkCode_session = session.getAttribute("checkCode_session"); String checkCode_session = (String) session.getAttribute("checkCode_session"); // 注意,这里有两个验证码,可以理解为checkCode_session是答案,checkCode是试卷 // 4、判断验证码是否正确 // 注意,下面用到的比较方法可以不区分大小写,但是两个比较的值要是String,所以上面的Object要转型 if(checkCode_session.equalsIgnoreCase(checkCode)){ System.out.println("1111111"); // 如果验证码一致,则判断用户名与密码是否一致 if("ycw".equals(username) && "123".equals(password)){ System.out.println("2222222"); // 账号密码一致 // 这里原本是要调用 userDao 查询数据库的,现在只是模拟,下面的username也是暂时的 session.setAttribute("user", username); // ===>返回登录页面一个叫 user 的参数,它的值是username // 测试用 System.out.println("登录成功"); // 重定向到success.jsp resp.sendRedirect(req.getContextPath()+"/success.jsp"); } else { // 账号密码不一致 // 存储提示信息到request req.setAttribute("login_error", "账号或者密码错误"); // 转发到登录页面 req.getRequestDispatcher("/login.jsp").forward(req, resp); // 测试用 System.out.println("账号或者密码错误"); } } else { System.out.println("3333333"); // 验证码不一致 // 存储提示信息到request req.setAttribute("cc_error", "验证码错误"); // 转发到登录页面 req.getRequestDispatcher("/login.jsp").forward(req, resp); // 测试用 System.out.println("验证码错误"); } }
初学jsp遇到数据库连接处理问题
这个是注册插入数据代码,在网页中可以运行成功,说明我的数据库连接是没问题的 ``` <%String uid=request.getParameter("uid"); String pwd=request.getParameter("pwd"); Object[]paramss={uid,pwd}; String sqll="insert into tb_vip values(?,?)"; if(DBHelper.runupdatesql(sqll, paramss)) { out.print("已经成功注册"); } else out.print("服务器问题请与客服联系"); %> ``` 下面这段是判断数据库中用户名是否存在,不存在才可以用上面代码注册,但是运行后不管数据库中是否存在用户名,网页中只打印“注册失败,用户名不存在” ``` <% String uid=request.getParameter("uid"); String pwd=request.getParameter("pwd"); Object[] params={uid}; String sql ="select count(*)from tb_vip where userid=?"; Result result=DBHelper.runselectsql(sql, params); if(result.getRowCount()==0){ Object[]paramss={uid,pwd}; String sqll="insert into tb_vip values(?,?)"; if(DBHelper.runupdatesql(sqll, paramss)){ out.print("已经成功注册"); }else{out.print("服务器问题请与客服联系");}} else{ out.print("注册失败,用户名已存在"); } %> ``` 下面是java数据库处理代码部分 ``` package jspex; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.servlet.jsp.jstl.sql.Result; import javax.servlet.jsp.jstl.sql.ResultSupport; public class DBHelper { private static final String className = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static final String url = "jdbc:sqlserver://localhost:1433;databasename=studentm"; private static final String uname = "sa"; private static final String upass = "c111111"; public static Connection getConn(){ Connection conn = null; try{ Class.forName(className); conn = DriverManager.getConnection(url,uname, upass); } catch(Exception e){ e.printStackTrace(); } return conn; } public static void closeConn(Connection conn){ try{ if(conn!=null){ conn.close(); } } catch(Exception e){ e.printStackTrace(); } } public static void closePstmt(PreparedStatement pstmt){ try{ if(pstmt!=null){ pstmt.close(); } } catch(Exception e){ e.printStackTrace(); } } public static void closeRs(ResultSet rs){ try{ if(rs!=null){ rs.close(); } } catch(Exception e){ e.printStackTrace(); } } public static boolean runupdatesql(String sql,Object[]params){ Connection con=null; PreparedStatement ps=null; try{ con=getConn(); ps=con.prepareStatement(sql); for(int i=0;i<params.length;i++){ ps.setObject(i+1, params[i]); } ps.executeUpdate(); return true; }catch(Exception e){ e.printStackTrace(); return false; } finally{ try{ ps.close(); con.close(); } catch(Exception e){ e.printStackTrace(); } } } public static Result runselectsql(String sql,Object[]params){ Connection con=null; PreparedStatement ps=null; ResultSet res=null; Result result=null; try{ con=getConn(); ps=con.prepareStatement(sql); for(int i=0;i<params.length;i++){ ps.setObject(i+1, params[i]); } res=ps.executeQuery(); result=ResultSupport.toResult(res); } catch(Exception e){ e.printStackTrace(); } finally{ try{ res.close(); ps.close(); con.close(); }catch(Exception e){ e.printStackTrace(); } } return result; } } ``` 下面是注册页面,我为了好找错误,还把相关js功能注释掉了 ``` <html> <head> <title>reg</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> #loginform{ width:300px; height:auto; } label{ width:60px; height:30px; text-align:left; font-size:14px; font-weight:hold; vertical-align:bottom; } .inpute{ width:160px; height:20px; } .row{ width:300px; height:30px; } </style> <script type="text/javascript"> function checkform(){ var name=document.getElementById("uid"); var pass=document.getElementById("pwd"); /*var rpass=document.getElementById("rpwd");*/ if(name.value.length<=0){ alert("用户名不能为空"); name.focus(); return false; } if(pass.value.length>=8){ alert("密码长度不对"); pass.focus(); return false; } /**if(pass!=rpass){ alert("密码不一致"); return false; }**/ return true; } </script> </head> <body> <div id="loginform"> <form onsubmit="return checkform();"action="doreg.jsp" method="post"> <div class="row"> <label for="uid">用户名: </label> <input name="uid" type="text" class="inpute" id="uid"> </div> <div class="row"> <label for="pwd">密码: </label> <input name="pwd" type="password" class="inpute" id="pwd"> </div> </div> <!-- <div class="row"> <label for="rpwd">确认密码:</label> <input name="rpwd" type="password" class="inpute" id="rpwd"> </div> --> <div class="row"> <input type="submit" value="注册"/><input type="reset" value="重新填写"/> </div> </form> </div> </body> </html> ``` 分析了很久,不知道出现了什么问题,希望大家可以帮帮我
ajax存取值 实现跳转页面问题
``` $(document).ready(function() { $("#zhuce").on("click", function() { var usename = $("#username").val(); $.ajax({ type : 'post', url : "/aidazhe-project/zhuceu", data : { uname : usename, }, dataType : "json", success : function(data) { if (data.flag == 'ok') { $("#div1").html(data.msg); sessionStorage.setItem("haha", "ok"); /* Map<String,String>map=new HashMap<String,String>(); map.put("hah",ok); */ } else { $("#div1").html(data.msg); } } }); /* alert(注册成功,请登录); */ }); }); function show() { /* String str =map.get("hah").toString(); */ if ( sessionStorage.getItem("haha")=='ok') { alert("注册成功"); sessionStorage.clear(); window.location = "Login.jsp" } } ``` 这是我写的一个注册页面转登录的方法 注册跳转/aidazhe-project/zhuceu判断用户名是否重复 ‘ok’就是不重复 然后跳到下面的show()方法中 弹框 跳转 我现在遇到的问题是 第一次 输入已有的用户名 会提示用户名已存在 改新用户正常注册跳转 但是 现在不刷新网页 输入任何已注册的用户 都不会提示用户已存在 而是直接跳转注册成功 sessionStorage.setItem这种方法会在服务器产生缓存 有没有更好的存取值的方法啊 因为上 面用的是ajax 所以没有页面跳转的 我的能力只能在下面加一个方法 希望哪位前辈能帮我解决一下
这段JSP代码哪里有问题,另外有一个问题请教!
[size=x-large][/size][code="java"] <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%@ page import="tools.Person"%> <%@ page import="tools.QueryPerson"%> <%@ page import="registrationPackage.SavePerson"%> <jsp:useBean id="personID" class="tools.Person" scope="session"></jsp:useBean> <jsp:useBean id="queryPersonID" class="tools.QueryPerson" scope="application"></jsp:useBean> <jsp:useBean id="savePersonID" class="registrationPackage.SavePerson" scope="application"></jsp:useBean> <jsp:setProperty name="personID" property="*" /> <html> <head> <base href="<%=basePath%>"> <title>Person Registration Page</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"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h3> Personal Registration Page </h3> <form method="post"> <br> ID <input type="text" name="ID" /> </br> <br> Password <input type="text" name="password" /> </br> <br> <input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Reset" value="Reset" /> </br> <% if (queryPersonID.query(personID)) { out.println("The ID (" + personID.getID() + ") is existed"); } %><br> <% if ((personID.getID().length() == 0) || (personID.getID().length() > 20)) { out.println("The ID's length must be between 0~20"); } %><br> <% if ((personID.getPassword().length() == 0) || (personID.getPassword().length() > 20)) { out.println("The Password's length must be between 0~20"); } %><br> <% savePersonID.save(personID); out.println("The ID (" + personID.getID() + ")is now registered "); out.close(); %><br> </form> </body> </html> [/code] [b]1.我的目的是想通过输入框里输入ID和Password注册账号.(另外几个JavaBean就没给出来了) 2.if语句是为了判断账号是否已经存在或者格式有误(我想实现如果有误就恢复到页面的Reset状态,这一步不会写,if语句等于没用),请教这里该怎么写 3.这段代码的if语句是在submit以后执行还是在submit之前执行(经实践应该是在submit之前就执行了),请问如果要在submit以后执行应该怎么写[/b]
关于struts中html:select 出现Cannot find bean: "list" in
我在网上找到个例子, 仿照做. 静态的没有问题. 但动态的就出来问题了. 各位帮忙看看问题怎么解决呢. Servlet.service() for servlet jsp threw exception javax.servlet.jsp.JspException: Cannot find bean: "list" in any scope Action相关代码: public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ModelListForm modelListForm = (ModelListForm) form; List<Objects> modelList ; modelList = modelMgr.getAllModelNames(); request.setAttribute("list", modelList); return mapping.getInputForward(); } Objects类里面有 id 和 name两个属性. 也有相关的 getter, setter方法. ActionForm相关代码: private String select; public String getSelect() { return select; } public void setSelect(String select) { this.select = select; } JSP相关代码: <html:form action="/modelList.do"> <html:submit /> <html:select property="select"> <htmlptionsCollection name="list" label="name" value="id" /> </html:select> </html:form> struts配置文件相关: <action attribute="modelListForm" input="/pages/modelBody.jsp" name="modelListForm" path="/modelList" scope="request" /> 网上那个例子说, 如果直接在地址栏输入...modelList.do而不是/pages/modelBody.jsp就不会有这个问题. 但我想先读入页面, 然后按submit后, 再读入动态数据. 应该如何解决呢? [b]问题补充:[/b] 谢谢1L的回复. 但是这个方法是不是只能判断 list属性 是否在当前scope呢? 可我的问题现在报错说,list属性不存在。这个应该如何解决呢?
不进Struts拦截器,麻烦帮解决,谢谢~~~~~
test.jsp <%@ page contentType="text/html;charset=GB2312"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>AJAX提交请求测试页面</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"> <script type="text/javascript" src="js/jquery-1.8.0.js"></script> <script type="text/javascript" src="js/json.js"></script> </head> <script language="javascript"> $(document).ready(function(){ $("#btn").click(function(){ $.ajax({ url: "Essa", type: "POST", data: {"AppCode":"51601","DataSets":"1","Datas":"[{'name':'fsg','pwd':'1'}]"}, dataType: "json", success:function(data) { var jsonStr = eval("("+data+")"); alert(data); //document.getElementById("info").innerHTML = "retAppCode: [ "+jsonStr.retAppCode+" ] DataSets: [ "+jsonStr.retDataSets+" ] 信息:[ "+jsonStr.retDatas[0].info+" ] "; //alert("success:OperCode="+jsonStr.OperCode); //alert("success:DataSets="+jsonStr.DataSets); //alert("success:Datas[0].name="+jsonStr.Datas[0].name); //alert("success:Datas[0].age="+jsonStr.Datas[0].age); }, error:function(data) { alert("error:"); } }); }); }); </script> <body> <div id="info"></div> <s:submit value="%{getText('test')}" id="btn"/> </body> </html> struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <include file="struts-default.xml"/> <package name="essa" extends="json-default"> <interceptors> <interceptor name="myInterceptor" class="com.essa.Interceptor.MyInterceptor"> <param name="filterURISwitch">/welcome.html;/login;/html/help;</param></interceptor> <interceptor-stack name="myDefaultStack"> <interceptor-ref name="myInterceptor" /> <interceptor-ref name="json" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="myDefaultStack" /> <default-action-ref name="index"></default-action-ref> <global-results> <result name="failPage" type="redirect">/login.jsp</result> </global-results> <action name="index"> <result type="redirect">/welcome.html</result> </action> <action name="Essa" class="com.essa.action.EssaAction"> <result type="json"><param name="root">result</param></result> </action> <action name="LoginAction" class="com.essa.action.LoginAction"> <result name="LoginOK" type="dispatcher">/website/home.jsp</result> <result name="LoginFail" type="redirect">/loginFail.html</result> <result name="Normal" type="redirect">/welcome.html</result> <result name="Help" type="dispatcher">/html/help/help.html</result> </action> </package> <constant name="struts.locale" value="zh_CN"></constant> <constant name="struts.i18n.encoding" value="UTF-8" /> <constant name="struts.action.extension" value="action"/> </struts> 拦截器 package com.essa.Interceptor; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; /** * @name MyInterceptor * @time 2015-06-20 * @version 1.0.0 * @author ZhangDongxu */ public class MyInterceptor implements Interceptor { private static Logger logger = Logger.getLogger(MyInterceptor.class .getName()); private HttpServletRequest request; private HttpSession session; private ServletContext application; private ActionContext context; private String filterURISwitch ; private String sessionUID; private String sessionPASS; /** * 自定义拦截器执行的代码 作用:拦截请求 * */ private static final long serialVersionUID = 1L; public String getFilterURISwitch() { return filterURISwitch; } public void setFilterURISwitch(String filterURISwitch) { this.filterURISwitch = filterURISwitch; } public void destroy() { } public void init() { } public String intercept(ActionInvocation invocation) throws Exception { logger.info(">>>>>> [请求信息:执行了自定义拦截器的代码!!!!=============================]"); System.out.println("===================================================="); System.out.println(this.filterURISwitch); System.out.println("===================================================="); String filterURISwitch = this.filterURISwitch;// 分号分隔的过滤器路径,即哪些不需要进行资源过滤拦截:例如/essa/welcome.html;/essa/html/help.html操作手册 String[] noFilterURIs;// 临时数组 System.out.println("过滤前提示"); System.out.println("===================================="); System.out.println("+++++++++++++++++++++++++++++++++++++++++++++"); System.out.println("获取不需要进行过滤URI的初始化参数值: " + filterURISwitch); noFilterURIs = filterURISwitch.split(";"); int pathFilterLength = filterURISwitch.split(";").length; int filesFilterLength = filterURISwitch.split("\\.").length - 1; int pathsSize = pathFilterLength - filesFilterLength; // 不需要过滤的具体请求的页面,带扩展名 String[] noDealURIPages = new String[filesFilterLength]; // 不需要过滤的路径 // 控制用户访问权限 context = invocation.getInvocationContext(); request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST); session = request.getSession(); String[] noDealURIPaths = new String[pathFilterLength]; String currentURI = request.getRequestURI();// 当前请求的页面URI String ctx = request.getContextPath(); currentURI = currentURI.substring(ctx.length()); System.out.println("currentURI = " + currentURI); // 提取不需要过滤的页面及路径数组,便于进行过滤 int j = 0; int k = 0; for (int i = 0; i < pathFilterLength; i++) { if (noFilterURIs[i].split("\\.").length == 2) { noDealURIPages[j] = noFilterURIs[i]; j++; } else { noDealURIPaths[k] = noFilterURIs[i]; k++; } } System.out.println("1、不需要进行过滤安全保护的静态资源路径数量 = " + pathsSize); for (int i = 0; i < k; i++) { System.out.println("paths = " + noDealURIPaths[i]); } System.out.println("2、不需要进行过滤安全保护的访问页面资源数量 = " + filesFilterLength); for (int i = 0; i < j; i++) { System.out.println("pages = " + noDealURIPages[i]); } System.out.println("+++++++++++++++++++++++++++++++++++++++++++++"); // 基于实际请求的情况,判断session中UID和具体的PASS是否存在,进行业务操作。所有的判断安全均在ACTION中完成。过滤器不进行业务方面的操作 if (currentURI.equalsIgnoreCase("/LoginAction.action")) { // 获取JSON结构中的data:UID,PASS值 sessionUID = request.getParameter("name"); sessionPASS = request.getParameter("pwd"); session.setAttribute("sessionUID", sessionUID); session.setAttribute("sessionPASS", sessionPASS); // 放行。让其走到下个链或目标资源中 return "LoginOK"; } // 判断是否是配置不进行过滤的页面 for (int i = 0; i < noDealURIPages.length; i++) { if (currentURI.equalsIgnoreCase(noDealURIPages[i]) && (session.getAttribute("sessionUID") != null || session.getAttribute("sessionPASS") != null)) { System.out.println("noDealURIPages=" + noDealURIPages[i]); // 放行。让其走到下个链或目标资源中 return "Normal"; } } // 判断是否是配置不进行过滤的路径 for (int i = 0; i < noDealURIPaths.length; i++) { if (currentURI.substring(0, currentURI.lastIndexOf("/")) .equalsIgnoreCase(noDealURIPaths[i]) || currentURI.equalsIgnoreCase(noDealURIPaths[i]) && (session.getAttribute("sessionUID") != null || session.getAttribute("sessionPASS") != null)) { System.out.println("noDealURIPaths=" + noDealURIPaths[i]); // 放行。让其走到下个链或目标资源中 return "Help"; } } // 如果不是上述情况,则判断是否存在UID和PASS,并进行逻辑操作链 if (session.getAttribute("sessionUID") == null || session.getAttribute("sessionPASS") == null) { session.invalidate(); //res.sendRedirect("http://localhost/login/login.html"); return "failPage"; } return invocation.invoke();// "failPage" } } 不进拦截器,test.jsp直接返回error
Ext的TabPanel打开的两个tab之间js内容错乱
[code="java"] Ext.onReady(function(){ Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); var viewport = new Ext.Viewport({ layout:'border', items:[ mainTabpanel, //将欢迎界面放入到ViewPort { region:'west', id:'west-panel', title:'导航菜单', split:true, width: 200, minSize: 175, maxSize: 400, collapsible: true, margins:'0 0 0 5', layout:'accordion', layoutConfig:{ animate:true }, items: [{ //contentEl: 'west', title:'发票系统', autoLoad : { url:'/ExtDemo/demo/tree.jsp', scripts:true }, border:false, iconCls:'nav' },{ title:'消息系统', autoLoad : { url:'/ExtDemo/demo/tree.jsp', scripts:true }, border:false, iconCls:'nav' },{ title:'多业务系统', autoLoad : { url:'/ExtDemo/demo/tree.jsp', scripts:true }, border:false, iconCls:'nav' },{ title:'日志系统', autoLoad : { url:'/ExtDemo/demo/tree.jsp', scripts:true }, border:false, iconCls:'nav' } ] } ] }); }); var mainTabpanel = new Ext.TabPanel({ id : 'MainTabPanel', region : "center", enableTabScroll: true, animate : true, frame:true, activeTab : "0", items : [{ xtype : "panel", title : "欢迎" }] }); //这里我定义一个欢迎的主页面,并且不能被关闭 function addtab(id, link, name) { //这里我定义一个方法,是在节点单击的时候触发这个方法, var tabId = "tab-" + id; var tabTitle = name; var tabLink = link; currentPage = tabId; var centerpanel = Ext.getCmp('MainTabPanel'); var tab = centerpanel.getComponent(tabId); var subMainId = 'tab-' + id + '-main'; if (!tab) { //判断MainTabPanel中是否存在这个页面,如果不存在 tab = centerpanel.add(new Ext.Panel({ id : tabId, title : tabTitle, autoScroll : true, iconCls : 'tabIconCss', layout : 'fit', //layout一定要是fit,不然显示grid会有问题。 border : false, tools : [{id:'refresh'}], closable : true })); centerpanel.setActiveTab(tab); //将焦点指向我点击节点打开的页面 tab.load({ url : tabLink, //指向我传过来的页面的位置 method:"post", params : { // 这里是关键的一个参数,传给load页,布局的关键 subMainId : subMainId }, scope : this, discardUrl : true, nocache : true, text : "页面加载中,请稍候……", timeout : 9000, scripts : true }); } else { //如果MainTabPanel,那么就直接将节点指向这个页面 centerpanel.setActiveTab(tab); } } [/code] 问题一:4个主菜单的url内容全部显示在了第一个主菜单里面。(见图一) 问题二:点击菜单时能在右侧center区域显示相应内容,但是所有的js相关内容都会显示在第一个打开的tab页面,而非js内容则能显示在对应的tab里面。(见图一、图二) 附:图一中的那个表格是子节点1所链接的内容,图二中的数字也是子节点1的,而图一中右侧的菜单是子节点2的,现在他们全都显示在子节点2中,但是非js的数字却在子节点1里面。 请教大家是怎么回事?
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
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。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
C语言荣获2019年度最佳编程语言
关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang近日,TIOBE官方发布了2020年1月编程语言排行榜单。我在前面给过一篇文章《2019年11月C语言接近Ja...
大学四年因为知道了这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岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
作为一名大学生,如何在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 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
立即提问