web中servlet有关,关于servlet只修改页面一部分的显示

最近刚学servlet,在eclipse里做的。servlet的doPost(),doGet()方法也学了,表单,数据库也做了。
有个问题,servlet每次用doPost(),doGet(),处理时,去往浏览器里println(),都是重新开一个新的页面,感觉很麻烦。那种点击一个按钮仅仅修改原本页面的一小块部分怎么做到。或者用其他的技术能实现吗,比如JSP,啥的。
还想问问servlet去println图片好麻烦,有啥好方法,或者换种技术

6个回答

你说的不请求整个页面更新界面上一小块的技术叫做 ajax
它实现的原理是,当你点一个链接或者按钮,这个链接不是指向一个地址,或者按钮不是直接提交,而是执行一段javascript
这段js会创建一个Http对象(不同的浏览器,这个对象略有不同)
用这个Http对象去访问你的服务器获取/提交数据(对于你的服务器来说,还是doPost和doGet接收),这里是Http对象,而不是浏览器,这是关键
当得到了服务器返回的数据后,js脚本再用 getElementById()方法找到页面上的一个div或者元素标记,并且修改InnerHtml属性,将返回的数据设置上去,完成刷新。
这样没有请求页面,浏览器上的内容就变了。

当然,上面说的是原理,具体到实践,不需要那么麻烦,用jQuery,这些全部都封装好了。

https://blog.csdn.net/u012843873/article/details/52817788 这个例子

 <span style="font-size:14px;"><span style="color:#ff0000;">index.jsp页面代码</span>  
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>    


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">    
<html>    
  <head>    
     <title>My JSP 'index.jsp' starting page</title>    
    <script type="text/javascript" language="javascript" src="js/jquery-1.6.js"></script>    
<script type="text/javascript">    
  function CheckAjax ()    
  {    
 if($('#username').val().length==0){      
                   $('.hint').text("用户名不能位空").css({"background-color":"green"});       
               }      
               else{      
                    alert($('#username').val());    
    $.ajax({    
            type: "get",//使用post方法访问后台    
            dataType: "json",//返回json格式的数据    
            url: "Output.jsp",//要访问的后台地址    
            contentType: "application/json;charset=utf-8",    
            data: {username:$('#username').val()},//要发送的数据    
            beforeSend: function() {    
            $("span").html("<font color='red'>ajax数据处理中,请稍后...</font>");},    

           complete :function(){$("span").html("<font color='red'>ajax数据处理完毕</font>");},//AJAX请求完成时    
            success: function(data){//data为返回的数据,在这里做数据绑定    
                 //jsonArray数组 用each遍历    
                    $.each(data.jsonArray,function(index){      
                     $.each(data.jsonArray[index],function(key,value){      
                                alert(key+":"+value)     
                                 $('body').append("<div>"+key+"---"+value+"</div>").css("color","red");       
                                       });      
                        });      

                    //单个字符串输出      
                    $('body').append("<div>"+data.account+"</div>").css("color","red");      
                },    
             error: function(XMLResponse) {alert(XMLResponse.responseText)}    
                });    

                }    
  }    
</script>    
  </head>    

  <body>    
     <table><tr><td>    
     <input type="text" id="username" name="username" title="username" onblur="CheckAjax();" >    
     </td></tr>    
     <tr><td>    
       <div class="hint">   </div>     
     </td></tr>    

     <tr><td>    
     <span></span>    
     </td></tr>    
     </table>    
  </body>    
</html>  </span>  

$.ajax 这个封装的就是创建Http对象

type: "get",//使用post方法访问后台

dataType: "json",//返回json格式的数据

url: "Output.jsp",//要访问的后台地址

假设你的服务器上 Output.jsp 或者你也可以用servlet的doGet,这个请求就发到你那里。你返回json(当然你也可以返回html,你修改dataType即可)

success: function(data) 这里的data就是返回的数据

 $('body').append("<div>"+data.account+"</div>").css("color","red");  

将服务器返回的数据添加到网页的body节点下。

ervlet去println麻烦,所以有了jsp页面,你可以把要输出的内容镶嵌在html里
当然更进一步,你还可以用mvc框架(比如struts或者spring mvc)等等。

你的问题用ajax+servlet可以实现

参考:https://blog.csdn.net/szliszt/article/details/1677716

可以使用ajax进行异步调用

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
[Java Web] JSP / Servlet 能【FORWARD】到静态页面吗?
前天,一组程序 ([TFW's Web Base / MVC New Generation (Experimental) / 01 Name Guess](http://typhoon.gotoip4.com/tfw-web-base-ng/devel/tfw/base/05_mvc_ng/01_name_guess/action.jsp "")) 在工作位的计算机上爆出“getOutputStream() has already called”异常: 当即 Debug 追踪,初步圈定范围,将出错的部分提取、最简化至一个 JSP 中,以便随时重现问题及试验各种解决办法: ![](http://img.bbs.csdn.net/upload/201711/11/1510400841_215581.jpg) 试验结果: 1. forward 到 JSP ,一切正常: ![](http://img.bbs.csdn.net/upload/201711/11/1510400868_565363.jpg) 2. sendRedict 到静态页面,一切正常: ![](http://img.bbs.csdn.net/upload/201711/11/1510400899_122707.jpg) **3. forward 到静态页面,出此异常:** ![](http://img.bbs.csdn.net/upload/201711/11/1510400926_837749.jpg) 然而同样的程序也跑在个人网站上和自己的计算机上,立刻前往个人网站访问,无此异常;下班后在自己的计算机上试验,也无此异常: ![](http://img.bbs.csdn.net/upload/201711/11/1510400972_254916.jpg) Debug 验明正身,的确是 forward 到静态页面: ![](http://img.bbs.csdn.net/upload/201711/11/1510401003_664330.jpg) ![](http://img.bbs.csdn.net/upload/201711/11/1510401017_574770.jpg) ![](http://img.bbs.csdn.net/upload/201711/11/1510401041_882843.jpg) 之后想到可能是环境差异所致: 1. 工作位计算机:Win7 x86 + Oracle JDK 1.8.X + Tomcat 7.0.59 ,forward 到静态页面异常; 2. 私人计算机:Linux x86-64 + Open JDK 1.8.X + Tomcat 7.0.59 ,forward 到静态页面正常; 3. 个人网站虚拟主机:Linux x86-64 + Oracle JDK 1.7.X + Tomcat 7.0.X ,forward 到静态页面正常。 **但问题依然存在: 1. JSP / Servlet 到底能不能 forward 到静态页面? 2. JSP / Servlet 如何正确地 forward 到静态页面?**
jsp,servlet使用过滤器解决中文问题时如果输入英文反而出现乱码
一:场景恢复 1,有一个html页面,其中有一个<form>标签,里面有一个text(name为content),一个submit。当单击submit时将text中的输入值传到servlet中进行输出。 2,有一个servlet,用来接收从html中传来的context值(text控件),然后进行输出。 3,有一个过滤器,具体详见代码部分。 4,有一个web.xml配置页面,用来配置servlet和Filter,具体详见代码部分 二:问题 如题所述,在html中的text中输入中文可以在servlet中正常显示,但输入以英文开头加中文或纯英文时就会出现乱码。 三:代码 1:html页面 <!DOCTYPE html> <html> <head> <meta charset="GBK"> <title>Insert title here</title> </head> <body> <script type="text/javascript"> function fsubmit(){ if(theForm.page[0].checked){ theForm.action="test.jsp"; } else if(theForm.page[1].checked){ theForm.action="test"; } } </script> <form name="theForm" action="" method="post" onclick="fsubmit()"> <input type="radio" name="page">JSP<p> <input type="radio" name="page">Servlet<p> <input type="text" name="content"><p> <input type="submit" value="提交"> </form> </body> </html>
servlet容器主要是用jvm哪些类库的api开发的?
学习了基础的java api,sevlet基础部分,ssh,这些学习材料上都说的比较详细。 但从java基础api学到java web,发现servlet容器方面从没介绍过具体实现,所有资料都是: 用tomcat吧,主流的除了tomcat还有很多款servlet容器哦!但我非常想知道servlet容器的实现原理 当然不是具体的实现,太长,以楼主水平也肯定看不懂,再说不要重复造轮子,就算知道了还是用tomcat(当然也造不出) 只是楼主有纠结癌,tomcat的servlet容器部分说是通过纯java实现的。那么肯定在jvm基础api中包有。 猜测是这样的,首先既然是servlet容器,那么肯定不是servlet api实现的。第二,servlet扯了一大堆,但最终的web应用最底层肯定是网卡啊,那么servlet容器的实现应该要使用到网卡控制方面api吧,而jvm自己是不弄底层驱动的,也就是说应该类似于system类库里面调用操作系统的网卡功能,同时作为web容器,还得实现thread方面内容。 于是楼主猜测serlet容器是system库里基础api和thread各种算法配合而成,由于只学过核心常见jvm api,根本不知道这些api的功能,不知道我想的是否正确,感谢大牛
webuploader用 servlet转发给jsp,jsp页面收不到呢?
![图片说明](https://img-ask.csdn.net/upload/201710/24/1508807699_670713.png) 这是servlet 代码 ``` package com.servlet; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class UploadServlet extends HttpServlet { @SuppressWarnings({ "rawtypes", "null" }) public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter(); try{ final long MAX_SIZE = 3* 1024 * 1024;// 设置上传文件最大为 3M // 允许上传的文件格式的列表 final String[] allowedExt = new String[] {"jpg","jpeg","gif"}; response.setContentType("text/html"); // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload DiskFileItemFactory dfif = new DiskFileItemFactory(); dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘 dfif.setRepository(new File(request.getRealPath("/")+ "upload"));// 设置存放临时文件的目录,web根目录下的upload目录 System.out.println("临时目录:"+new File(request.getRealPath("/")+ "upload")); // 用以上工厂实例化上传组件 ServletFileUpload sfu = new ServletFileUpload(dfif); // 设置最大上传尺寸 sfu.setSizeMax(MAX_SIZE); // 从request得到 所有 上传域的列表 List fileList = null; try { fileList = sfu.parseRequest(request); } catch (FileUploadException e) {// 处理文件尺寸过大异常 if (e instanceof SizeLimitExceededException) { out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节!"); return; } e.printStackTrace(); } // 没有文件上传 if (fileList == null || fileList.size() == 0) { out.println("请选择上传文件!"); return; } // 得到所有上传的文件 Iterator fileItr = fileList.iterator(); System.out.println("fileList:"+fileList); // 循环处理所有文件 while (fileItr.hasNext()) { FileItem fileItem = null; String path = null; long size = 0; // 得到当前文件 fileItem = (FileItem) fileItr.next(); // 忽略简单form字段而不是上传域的文件域(<input type="text" />等) if (fileItem == null || fileItem.isFormField()) { continue; } // 得到文件的完整路径 path = fileItem.getName(); // 得到文件的大小 size = fileItem.getSize(); if ("".equals(path) || size == 0) { out.println("请选择上传文件!"); return; } // 得到去除路径的文件名 String t_name = path.substring(path.lastIndexOf("//") + 1);//kaola.jpeg System.out.println("t_name:"+t_name); // 得到文件的扩展名(无扩展名时将得到全名) String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);//jpeg System.out.println(t_ext); // 拒绝接受规定文件格式之外的文件类型 String tmp=Arrays.toString(allowedExt); Pattern p = Pattern.compile(t_ext); Matcher m = p.matcher(tmp); if (m.find()==true) { //如果符合上传的格式 String now=new SimpleDateFormat("yyyyMMddhhmmssSSS").format(new Date()); System.out.println(now); // 根据系统时间生成上传后保存的文件名 String prefix = now; // 保存的最终文件完整路径,保存在web根目录下的upload目录下 String u_name = request.getRealPath("/") + "upload/" + prefix + "." + t_ext; String dwc; dwc=u_name; ** //转发给jsp页面 request.setAttribute("dwc",dwc); request.getRequestDispatcher( "/files1/xinzengchandizhengmingg**uanli.jsp").forward(request,response); System.out.println("最终保存目录:"+u_name); try { File file = new File(u_name); // 保存文件 fileItem.write(file); out.println("文件上传成功. 已保存为: " + prefix + "." + t_ext + " &nbsp;&nbsp;文件大小: " + size + "字节<p />"); } catch (Exception e) { e.printStackTrace(); } }else { System.out.println("不符合规定"); out.print("上传文件不符合规定!"); } } }catch(Exception e){ out.print("系统异常,请稍后再试!"); e.printStackTrace(); } } } ``` ** //转发给jsp页面 request.setAttribute("dwc",dwc); request.getRequestDispatcher( "/files1/xinzengchandizhengmingg**uanli 这也我想把上传成功的文件名传给jsp页面,然后添加到数据库,,试了好多方法,传不去过去值。 <!--测试接收到servlet传值显示在text框中--> <input type="text" class="input-text" value='${dwc}' placeholder="" id="" name="">
第一次用intellij idea写servlet,尝试了很多次都是报404,求大佬教教我。
在网上找了很多办法了,大部分方法我都试过了,但是还是报404,用myeclipse的时候没有出现过这种状况,新手上路,希望大佬可以帮一帮我。 创建的时候没有添加web.xml,因为想用servlet3.0来写。 ![主界面](https://img-ask.csdn.net/upload/201910/29/1572341240_399031.png) 这个是主界面。 ![tomcat配置1](https://img-ask.csdn.net/upload/201910/29/1572341448_159874.png) ![tomcat配置2](https://img-ask.csdn.net/upload/201910/29/1572341477_579854.png) 这两张是tomcat配置的界面。 ![图片说明](https://img-ask.csdn.net/upload/201910/29/1572341531_209668.png) 这个是jar包。 ![图片说明](https://img-ask.csdn.net/upload/201910/29/1572341676_735624.png) 这个是输入servlet地址报的404。 另外,从jsp用超链接跳转也是404。 ![图片说明](https://img-ask.csdn.net/upload/201910/29/1572341879_723869.png) ![图片说明](https://img-ask.csdn.net/upload/201910/29/1572341894_78024.png) ![图片说明](https://img-ask.csdn.net/upload/201910/29/1572341909_308455.png) 以上,希望大佬可以帮帮忙,已经卡在这好久了,万分感谢。
kaptcha生成验证码插件在html页面中使用为什么会报错求大牛指点迷津,不胜感激。
如下是代码 第一部分是web.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>s2sh</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 生成验证码配置 servlet--> <servlet> <servlet-name>Kaptcha</servlet-name> <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Kaptcha</servlet-name> <url-pattern>/kaptcha.jpg</url-pattern> </servlet-mapping> </web-app> ``` 接下来是页面的代码,我用的是html,这块声明一下这个配置用jsp是没有问题的,只是挪到了html页面中不知怎地就报错了,不影响页面生成验证码图片,但是后台是取不到session中的字符串的,因为session并没有创建,报的错也是session不能在response相应后创建。 <!-- 验证码开始 --> <div> <img src="../kaptcha.jpg" id="kaptchaImage" width="300px" height="50px" style="padding-top: 25px; "/> <input type="text" class="form-control col-xs-4" id="passWord" placeholder="请输入验证码" > </div> <!-- 验证码结束 --> ``` 接下来是页面点击图片生成验证码的js代码 <script type="text/javascript"> $(function(){ $('#kaptchaImage').click(function () { $(this).attr('src', '../kaptcha.jpg?' + Math.floor(Math.random()*100) ); }); }); </script> 然后以下是报错信息 三月 24, 2017 9:28:41 上午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet [Kaptcha] in context with path [/webapp] threw exception java.lang.IllegalStateException: Cannot create a session after the response has been committed at org.apache.catalina.connector.Request.doGetSession(Request.java:3016) at org.apache.catalina.connector.Request.getSession(Request.java:2385) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:897) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:909) at com.google.code.kaptcha.servlet.KaptchaServlet.doGet(KaptchaServlet.java:91) at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) *
Java Web该如何调用C++代码
java web入门选手,最近用MVC结构搭了一个java web的框架,jsp+servlet+javabeans,对于javabeans部分,想在处理数据时调用C++写成的算法,之前试着用JNI,但貌似这个对于java本地项目调用C++程序很好用,原封不动应用在javabeans上面就不太行,一直是java.lang.NoClassDefFoundError: Could not initialize class,偶尔报java.lang.UnsatisfiedLinkError,于是我想是不是JNI不太适用于java web项目,请大神指个方向,对于我这个情况,该用什么技术去连接javabeans和c++程序
java 接口调用 空指针问题
![这是不是表明我的接口可以调用!](https://img-ask.csdn.net/upload/201602/17/1455694864_478265.png) 但是当我为当中任何一个传参时,都会报空指针!以下是我认为有问题的部分,求大神指点!![图片说明](https://img-ask.csdn.net/upload/201602/17/1455695143_137358.png)![图片说明](https://img-ask.csdn.net/upload/201602/17/1455695227_175211.png) 这是我的配置文件! 【 web。xml】 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 加载Spring容器配置 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 设置Spring容器加载配置文件路径 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- springMVC配置 --> <!-- <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> --> <!-- 配置webservice的cxf --> <servlet> <servlet-name>CXFService</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CXFService</servlet-name> <url-pattern>/cxf/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
在web.xml版本为3.0且isELIgnored="false"的情况下,EL表达式仍未正常显示于jsp上。(跪求大佬帮忙)
**1.事情经过 ** 起初我在写一个注册的jsp,然后想通过el回显数据。写好之后,在浏览器里发现可以回显,然后写了个验证码,想看下验证码的情况,结果就发现没有回显数据。 我上网查了之后说,是web.xml版本过低,要设置isELIgnored="false",我在jsp里面设置了,不行,在web.xml里面设置了初始值,不行。我的web.xml是3.0的。 **2.代码** jsp部分代码 <form action="<c:url value="/StudentServlet"/>" method="post"> <input type="hidden" name="method" value="login"> ${requestScope.loginmsg }<br/> 学号:<input type="text" name="studentid" value="${requestScope.student.studentid }"/><br/> 密码:<input type="password" name="password" value="${requestScope.student.password }"/><br/> 验证码:<input type="text" name="verifycode" /><br/> <input type="submit" value="登录"> </form> servlet部分代码 try { student = studentservice.login(s); request.setAttribute("student", student); return "f:/studentjsps/jiemian/main.jsp"; } catch (loginException e) { request.setAttribute("student", s); request.setAttribute("loginmsg", e.getMessage()); return "r:/studentjsps/login.jsp"; } web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
java web的jsp里text获取不到数据,只获取到null!求解,相关代码如下!
我屏蔽掉那里则能存到数据库,但是是null,已经填了东西上去了,如果不屏蔽的话输出“书名不能为空”,没有报错!System.out.println(sql);了一下是输出insert into book(bookname,bookauthor,bookpress,bookedition,booklocation) values('null','null',null,'null','null'),这要怎么解决,求大佬帮忙! //添加书本(控制部分) public boolean addBook(String bookname, String bookauthor, String bookpress,String bookedition,String booklocation) { Connection conn = null; Statement stmt = null; try { conn = Database.getConnection(); stmt = conn.createStatement(); String sql = "insert into book(bookname,bookauthor,bookpress,bookedition,booklocation) " + "values('"+bookname+"','"+bookauthor+"',"+bookpress+",'"+bookedition+"','"+booklocation+"')"; //System.out.println(sql); stmt.execute(sql); return true; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } finally { Database.close(conn, stmt); } } //用的是servlet的doget和dopost,下面为servlet部分 String bookname = request.getParameter("bookname");//初始化图书的各个字段 String bookauthor = request.getParameter("bookauthor"); String bookpress = request.getParameter("bookpress"); String bookedition = request.getParameter("bookedition"); String booklocation = request.getParameter("booklocation"); // if(bookname==null||bookname.trim().isEmpty()){ // request.setAttribute("msg", "书名不能为空"); // request.getRequestDispatcher("/addbook.jsp").forward(request, response); // return; // } // if(bookauthor==null||bookauthor.trim().isEmpty()){ // request.setAttribute("msg", "作者不能为空"); // request.getRequestDispatcher("/addbook.jsp").forward(request, response); // return; // } // if(bookpress==null||bookpress.trim().isEmpty()){ // request.setAttribute("msg", "出版社不能为空"); // request.getRequestDispatcher("/addbook.jsp").forward(request, response); // return; // } // if(bookedition==null||bookedition.trim().isEmpty()){ // request.setAttribute("msg", "版本不能为空"); // request.getRequestDispatcher("/addbook.jsp").forward(request, response); // return; // } // if(booklocation==null||booklocation.trim().isEmpty()){ // request.setAttribute("msg", "出版存放位置不能为空"); // request.getRequestDispatcher("/addbook.jsp").forward(request, response); // return; // } Operator operate = new Operator(); boolean isSuccess = operate.addBook(bookname, bookauthor, bookpress, bookedition,booklocation); if(isSuccess){ request.setAttribute("msg", "增加成功"); request.getRequestDispatcher("/addbook.jsp").forward(request, response); return; }else{ request.setAttribute("msg", "增加失败"); request.getRequestDispatcher("/addbook.jsp").forward(request, response); return; } //下面是jsp部分 <form action="AddBookServlet" method="post" enctype="multipart/form-data"> <div> <input type="text" name="bookname" placeholder="请输入书名(如:三国演义)"></div> <div> <input type="text" name="bookauthor" placeholder="请输入作者(如:张三)"></div> <div> <input type="text" name="bookpress" placeholder="请输入出版社(如:中山大学出版社)"></div> <div> <input type="text" name="bookedition" placeholder="请输入版本(如:第一版)"></div> <div> <input type="text" name="booklocation" placeholder="请输入存放位置(如:1楼101室2019)"></div> <!-- <div> <a href="javascript:;" class="a-upload">点击这里上传文件(.txt文件) <input type="file" name="file" id="file"> </a></div> --> <div> <input type="submit" value="增加图书" id="addbook"> </div> <div> <a href="welcome.jsp" id="back">返回菜单</a></div></br> </form> <font color="red" size="2"> ${msg }</font>
往solr集群输入数据时输入到一部分就出现 Cannot talk to ZooKeeper - Updates are disabled.问题?
org.apache.solr.client.solrj.impl.CloudSolrClient$RouteException: Error from server at http://192.168.139.130:9080/solr/collection1: Cannot talk to ZooKeeper - Updates are disabled. at org.apache.solr.client.solrj.impl.CloudSolrClient.directUpdate(CloudSolrClient.java:631) at org.apache.solr.client.solrj.impl.CloudSolrClient.sendRequest(CloudSolrClient.java:980) at org.apache.solr.client.solrj.impl.CloudSolrClient.requestWithRetryOnStaleState(CloudSolrClient.java:869) at org.apache.solr.client.solrj.impl.CloudSolrClient.request(CloudSolrClient.java:805) at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:135) at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:174) at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:139) at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:153) at com.ego.search.service.impl.TbItemServiceImpl.init(TbItemServiceImpl.java:61) at com.ego.search.controller.TbItemController.init(TbItemController.java:30) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://192.168.139.130:9080/solr/collection1: Cannot talk to ZooKeeper - Updates are disabled. at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:560) at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:234) at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:226) at org.apache.solr.client.solrj.impl.LBHttpSolrClient.doRequest(LBHttpSolrClient.java:376) at org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:328) at org.apache.solr.client.solrj.impl.CloudSolrClient$2.call(CloudSolrClient.java:606) at org.apache.solr.client.solrj.impl.CloudSolrClient$2.call(CloudSolrClient.java:603) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:210) ... 3 more ``` ```
JAVA:关于HTTPServlet和HTML的问题
![图片说明](https://img-ask.csdn.net/upload/201601/26/1453818205_642630.jpg) 假设这个HTML文件就是个前台客户端,后台服务器是TomCat,用的是继承HttpServlet方式,那么这个前台HTML页面里画红框的部分不太理解 问题一:from标签里的id属性是什么意思,有name了还要id干什么? 问题二:action里提交地址的格式该怎么写?是否是这样子: TomCat中的servlet.xml中配置的path上下文路径 / web.xml里配置的url-pattern路径 如果不是,请告诉我正确答案 问题三:onclick属性代表什么?里面的值填什么
Spring MVC views下面的JSP文件无法进入controller
这是controller的代码,点击JSP的链接时控制台没有输出,找了一天的原因了也没弄好 ``` @RequestMapping("/helloworld") public String helloworld(){ System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); return "error"; } ``` 这是页面的链接,路径什么的都是直接复制的,试了好多遍了 ``` <a href="helloworld">hello world</a> ``` 这是springMVC.xml的配置文件,网上参考的,有点乱,不知道有没有大神能够提供标准一点的配置文件 ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 配置自动扫描的包 --> <context:component-scan base-package="com.lyy.controller"></context:component-scan> <!--配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.gjt.mm.mysql.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/lyytext?useUnicode=true&amp;characterEncoding=UTF-8" /> <property name="username" value="root" /> <property name="password" value="123" /> <!-- 连接池启动时的初始值 <property name="initialSize" value="3" /> --> <!-- 连接池的最大值 --> <property name="maxActive" value="30" /> <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 --> <property name="maxIdle" value="3" /> <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 --> <property name="minIdle" value="2" /> </bean> <!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> </bean> <mvc:annotation-driven/> <mvc:resources mapping="/views/**" location="/WEB-INF/views/"/> <mvc:default-servlet-handler/> <!-- 配置业务bean:PersonServiceBean --> <bean id="UserDaoImpl" class="com.lyy.dao.impl.UserDaoImpl"> <!-- 向属性dataSource注入数据源 --> <property name="dataSource" ref="dataSource"></property> </bean> </beans> ``` 最后这是web.xml文件: ``` <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <!-- 配置DispatchcerServlet --> <servlet> <servlet-name>mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置Spring mvc下的配置文件的位置和名称 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:SpringConfig.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.gif</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>mvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- springMvc处理post提交中文乱码 --> <filter> <filter-name>characterEncoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!-- 指明定编码规则 --> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> ``` 这是报错信息: ``` type Status report message /WorkPlan/controller/helloworld description The requested resource is not available. ``` 我实在不知道是为啥了。。。求大神~~~
springMVC form 表单提交错误,类型转换错误
1、我用form表单提交表单,偶尔会报类型转换的错误,一直找不到原因,并不是每次都这样,偶尔几天出一个。 2、我不是直接提交的表单,使用的是easyui的form提交,因为可以回调。 3、我的form表单,设置了 <form method="post" id="peopleInfo" enctype="multipart/form-data"> 下面是我的部分代码和错误,请教各位了 四月 04, 2018 8:29:53 上午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet [SpringMVC] in context with path [/XMGL] threw exception [Request processing failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'org.springframework.web.multipart.commons.CommonsMultipartFile'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.commons.CommonsMultipartFile]: no matching editors or conversion strategy found] with root cause java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.commons.CommonsMultipartFile]: no matching editors or conversion strategy found at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:287) at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:107) at org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:64) at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:47) at org.springframework.validation.DataBinder.convertIfNecessary(DataBinder.java:603) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveRequestParam(HandlerMethodInvoker.java:519) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:352) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:172) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2549) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2538) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) ``` ``` ``` ```
ajax和struts不都是表示层的吗,为什么能综合呢,还有一些其他的问题。
大家好。我现在还是学校的一名在读学生。对web的实践缺乏经验,大概实战过的也就是jsp+javabean的model1模型。还用过少部分ajax库的内核,没用过ajax库的ui。虽然我没有学习和实战过mvc框架等东西,但是我已经充分认识到了jsp+javabean这种开发模型的极其不便利性。我有一些困惑想请教有经验的好心人。 现在java web开发方面名词太多了!我想直接请教一下最经典最厚实的框架是什么,然后学习用到我自己的项目就可以了。一些新技术我估计学不来。 现在有个小项目需求很简单,就是数据库中读东西出来显示,但是我参与过这个项目的前期工作,觉得数据库的设计修改太快了,一旦数据库修改了,我好多地方都要重写,而且这个项目的负责人对使用什么数据库都没确定,我非常的晕,让大家见笑了,学校的项目嘛。我想问有什么框架是专门针对这个情况的?就是特别擅长处理数据库设计经常变化,跨数据库的。 还有,我想把显示弄得好看点,但是这个项目负责人自己有一套css,很烦这个。这个项目基本上开发是乱七八糟的,感觉没有规矩。但是我还是想做好自己的那一部分,我是不是应该采用ajax的ui库?或者采用别的什么好方法? 还有一个问题就不针对特定项目了,就泛泛的问个问题。 现在java web开发最被广泛使用的是什么啊,我真的对很多名词搞昏头了,jsf,ssh framework,jstl,gwt,gwt+ext? 甚至javafx,flex,我在这里不想评价谁更好,我想让有经验的人帮我指点一个最好用的吧。 另外我至今没弄明白ajax和ssh框架的关系,你看ajax和struts都是显示层的,为什么两者竟然可以不互斥的在一起?我一直以为有了ajax之后,那么服务器端基本上就相应请求就是了。我这个观点哪里错了? 还一个问题,struts能使的页面好看吗?像ajax那样。 越详细越好!谢谢! [b]问题补充:[/b] 谢谢你的回答。我觉得现在清晰一些了。我可以使用ajax的ui库使得页面变得好看,然后在一些重视用户体验的地方采取ajax请求,这个请求实际上后台还是请求到了struts的*.do上。那么从这个角度说,我大概知道ajax和struts是怎么融合的了。 我还有几个问题,不知道你还在没。不过我分给你了。就是struts除了封装servlet,拦截匹配请求外,还是有自己的标签库的,什么jstl,el,这东西是不是最好不要用?我使用的是经典的struts1.2,不是struts2.×的。我猜想<html:text>这种标签估计不好看。 多谢回答。
java web服务器问题,用什么构建服务器控制台
新手,最近在做servlet+tomcat+android的一个课程设计。大部分功能已经实现。现在我想实现的是做一个可视化的服务器控制台,比如在控制台上输入信息可以插入一条数据到数据库,在控制台点击按钮可以调用服务器里的某个方法。就好像是第三方消息推送平台的控制台那样,输入信息,点击按钮,服务器就会发通知到手机。请问这个要怎么实现,是用jsp吗??还是有其他方法。
JavaTomcat部署远程web启动错误-本地部署远程web启动错误
JavaTomcat启动错误 关键错误日志如下: 28-Jun-2019 07:54:44.034 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 28-Jun-2019 07:54:44.147 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [D:\WebServer\apache-tomcat-8.0.35\webapps\DaysToDie] 28-Jun-2019 07:54:44.173 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/DaysToDie]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) at Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@aaca5bc] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) at Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@77cfd824] at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140) at Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: error in opening zip file at Caused by: java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(Unknown Source) at java.util.zip.ZipFile.<init>(Unknown Source) at java.util.jar.JarFile.<init>(Unknown Source) at java.util.jar.JarFile.<init>(Unknown Source) at 放到远程之后无法启动,本地正常 1.看了报错之后,这边第一时间是去删tomcat-catalina缓存,然后进行开启 2.仔细检查过web.xml没有问题,甚至删除了后面添加的一部分进行测试,也就是之前这个在远程能正常访问的 3.继续看下面的日志,他说无法打开zip文件后面还报了一些jar资源文件错误 jar文件可以确保是没错误的,刚开始这些放到远程正常启动 我是直接把本地tomcat-webapps放到远程上面的tomcat-webapps的,远程的访问加载路径这些都在第一次使用时改过,后面一段时间也正常使用 后面改了一些代码,然后重新部署时出现该错误
关于tomcate的一个很奇怪的问题,求指导!!
我正在学习dwr,对于xml语法什么的也不是很懂........(这是我的文化背景) 在遇到这个问题之前,一切都还算顺利的,但是我不知道自己干了什么,有一次我和往常一样新建了一个web工程(继续学习dwr),我引进了dwr.jar,然后加进web.xml和dwr.xml,然后把工程加进tomcate里面,启动tomcate服务器,结果就出错了: [code="java"] 严重: Parse Fatal Error at line 2 column 2: The element type "wep-app" must be terminated by the matching end-tag "</wep-app>". org.xml.sax.SAXParseException: The element type "wep-app" must be terminated by the matching end-tag "</wep-app>". at org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1213) at org.apache.xerces.framework.XMLDocumentScanner.reportFatalXMLError(XMLDocumentScanner.java:579) ..................(只是部分) 严重: Parse error in application web.xml file at jndi:/localhost/DWRTest/WEB-INF/web.xml ////出错的那个工程是DWRTest org.xml.sax.SAXException: Stopping after fatal error: The element type "wep-app" must be terminated by the matching end-tag "</wep-app>". at org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1245) at org.apache.xerces.framework.XMLDocumentScanner.reportFatalXMLError(XMLDocumentScanner.java:579) ...................(只是部分) [/code] 这个错误很容易就看出是处在web.xml这个文件里面,可是我看了web.xml里面根本没有wep-app这个标签啊,web-app倒是有的,下面是我的web.xml文件: [code="java"] <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>DWR Test</display-name> <servlet> <display-name>DWR Servlet</display-name> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> <session-config> <!-- Default to 5 minute session timeouts --> <session-timeout>5</session-timeout> </session-config> <welcome-file-list> <welcome-file>speclist.jsp</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app> [/code] [color=red]我问过一个群,里面有朋友说,<web-app>是和</wep-app>配对的,所以我错了,可是不可能啊!我再犯这个错误之前,web.xml一直就是这么写的,怎么都没出错呢?为了证实这一点,我新建了工程,重新试了一遍,结果很顺利,遗憾的是,在启动的时候还是会出现上面的错误[/color] [color=green]然后我一气之下删了那个DWRTest工程,重启tomcate,居然还给我报出上面的错误,我确定webapps里面没有这个工程了的,这到底是为什么啊??[/color] [b]目前的状态就是,只要启动tomcate就会出先这个错误,但是不影响其他工程,算是能正常使用,可是每次启动都报这个不应该存在的错误,多么的不爽啊![/b] 拜托了,分数不多!
Eclipse开发安卓客户端程序用来实现登陆注册功能
哪位大侠能够指导下: 用安卓写客户端程序,mysql为数据库存储用户的用户名和密码,现在需要的是用C/S模式,在Eclipse创建工程的时候,工程里面需要哪些文件,比如新建一个安卓应用工程,那么servlet的部分要放在哪,还是直接建一个web工程呢?
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队译者 | 凯隐编辑 | Jane出品 | AI科技大本营(ID:rgznai100)本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知说话者数秒的音频来合成其讲话音频,即网
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
【管理系统课程设计】美少女手把手教你后台管理
【后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 一、这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,
4G EPS 第四代移动通信系统
目录 文章目录目录4G EPSEPS 的架构EPS 的参考模型E-UTRANUEeNodeBEPCMME(移动性控制处理单元)S-GW(E-RAB 无线访问承载接入点)P-GW(PDN 接入点)HSS(用户认证中心)PCRF(计费规则与策略)SPR(用户档案)OCS(在线计费)OFCS(离线计费)接口类型Uu 接口(空中接口,UE 和 AN 之间)S1 接口(AN 和 CN 之间)S1-U 接口和
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
立即提问