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的话 就跳转到视图解析器里了 但是我不想这么做 求大神 帮忙出出主意 帮个忙
一个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> ``` ```
请问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("验证码错误"); } }
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 页面无法正常刷新? 另外,正式环境是不能关闭 页面缓存,效率会差很多。。。 还请各位指点!!
初学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里面。 请教大家是怎么回事?
如何实现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> ``` 求求各位大佬了,救救孩子吧............................
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱  极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件,   选择安装到U盘(按照操作无需更改) 三、重启进入pe系统   1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12)     选择需要启
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案 去年我去爱卡汽车面试PHP,一轮和二轮面的都不错,在三轮面到Nginx的时候很多问题当时不知道怎么回答,确实没有深入学习过,花了一段时间的学习,终于能解答Nginx高性能优化的问题了,10月24号为了获得程序员勋章,发布了半个优化笔记,浏览到了1000+,受到这个鼓舞,我抽时间在仔细整理下关于Nginx性能优化的问题,我们从软件说起。...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
化繁为简 - 腾讯计费高一致TDXA的实践之路
导语:腾讯计费是孵化于支撑腾讯内部业务千亿级营收的互联网计费平台,在如此庞大的业务体量下,腾讯计费要支撑业务的快速增长,同时还要保证每笔交易不错账。采用最终一致性或离线补...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
Java学习笔记(七十二)—— Cookie
概述 会话技术: 会话:一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器发送资源请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cookie,把数据存储到客户端 服务器端会话技术:Session,把数据存储到服务器端 Cookie 概念:客户端会话技术,将数据存储到客户端 快速入门: 使用步骤: 创建C
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
强烈推荐10本程序员在家读的书
很遗憾,这个鼠年春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 显示当前目录 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mk
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库
在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点,对于用户的信息、相关业务的内容,通常都需要对其进行存储,而不是像第2章节中那样,把用户信息存储在内存中(重启就丢了!)。 对于信息的存储,现在已经有非常非常多...
基于Python的人脸自动戴口罩系统
目录 1、项目背景 2、页面设计 3、器官识别 4、退出系统 1、项目背景 2019年新型冠状病毒感染的肺炎疫情发生以来,牵动人心,举国哀痛,口罩、酒精、消毒液奇货可居。 抢不到口罩,怎么办?作为技术人今天分享如何使用Python实现自动戴口罩系统,来安慰自己,系统效果如下所示: 本系统的实现原理是借助 Dlib模块的Landmark人脸68个关键点检测库轻松识别出人脸五官
相关热词 c# 为空 判断 委托 c#记事本颜色 c# 系统默认声音 js中调用c#方法参数 c#引入dll文件报错 c#根据名称实例化 c#从邮件服务器获取邮件 c# 保存文件夹 c#代码打包引用 c# 压缩效率
立即提问