js脚本调用servlet不成功,不知道问题出在哪儿了

js脚本调用servlet不成功,不知道问题出在哪儿了,第1张

webxml配置有问题,如果是我,我会这么修改

<servlet-name>ServletInit</servlet-name>

<servlet-class>ServletInit</servlet-class>

改为

<servlet-name>ServletInit</servlet-name>

<servlet-class>testServletInit</servlet-class> //类路径,如果你这个类有出现这个字样package test;

<servlet-mapping>

<servlet-name>ServletInit</servlet-name>

<url-pattern>/servlet/ServletInit</url-pattern> //注意这个路径

</servlet-mapping>

改为

还有jsp页面,调用如下

action="/servlet/ServletInit"

这个路径实际上就是你的<url-pattern>/servlet/ServletInit</url-pattern>的参数

如果这样还找不到路径,jsp页面这样调用

action="<%=requestgetContextPath()%>/servlet/ServletInit"

一起学习吧

sevlet能直接运行,需要环境支持的。

不同的web服务器都是servlet容器,这些服务器通常都有一些配置文件、jar、启停脚本等等。需要把Web应用打成WAR包部署到Tomcat中,在Web应用中要指明URL被哪个类的哪个方法所处理(不论是原始的Servlet开发,还是流行的Spring MVC都必须指明)。

服务器将对应的Servlet(比如HelloServlet)实例化,调用Servlet实例的service方法。服务器会将request和response作为参数传递给service方法,可以通过request对象获取请求数据(比如一些请求参数值),通过response对象写入处理结果。

sevlet运行:

服务器通过response对象获取处理结果,创建响应数据包,服务器发送响应数据包给浏览器。浏览器解析响应数据包,并且生成相应的页面。传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。

在>

前台用AJAX将json数据传入后台,同样,后台将数据封装在json串中可传入前台,

前台用ajax的回调函数响应:

示例:

前台脚本:

<script>

$(function(){

$("a")click(function(){

var url = thishref;

var args = {"time":new Date()};

$getJSON(url,args,function(data){    //回调函数的参数data就是后台封装的json串

$("#bookName")text(databookName);      //data属性名   读json串中的内容

$("#totalMoney")text(datatotalMoney);

$("#totalBook")text(datatotalBook);

});

return false;

});

})

</script>

后台封装:在servlet类中代码:

//准备响应JSON对象:

StringBuilder result = new StringBuilder();

resultappend("{")append("\"bookName\":\""+bookName+"\"")append(",")append("\"totalMoney\":"+scgetTotalMonry())append(",")append("\"totalBook\":"+scgetTotalNumber())append("}"); //构建json串

responsesetContentType("text/javascript");  //声明类型防止乱码

responsegetWriter()print(resulttoString()); //响应JSON

当服务器端通过>

Servlet通过这些类理解客户的请求,并将其处理后的内容通过>

Web容器进行整理后用>

生命周期

Servlet实例的装载

Servlet 实例装载有以下三种方式:

当第一次调用Servlet 时,就会创建一个 Servelt 实例,这个实例会长期驻留内存中。

在Webxml文件中的<Servlet></Servlet>之间添加如下代码:<loadon-startup>1</loadon-startup>,Servelt 容器启动时会自动装载这个Servlet,数字越小表示优先级别越高。

Servlet 类文件被更新后,会重新装载Servlet。

jsp和servlet的区别有以下几点:

Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。

1、jsp经编译后就变成了Servlet。

2、jsp更擅长表现于页面显示,servlet更擅长于逻辑控制。

3、Servlet中没有内置对象,Jsp中的内置对象都是必须通过>

4、而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。

扩展资料

Servlet和JSP的不同点:

1、Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。

2、而JSP的情况是Java和HTML可以组合成一个扩展名为jsp的文件。

3、JSP侧重于视图,Servlet主要用于控制逻辑

4、Servlet更多的是类似于一个Controller,用来做控制。

参考资料来源:百度百科-servlet

下面是服务器端的jsp代码:

与JQuery中其他方法一样,serialize()方法也是作用于一个JQuery对象,它能够将DOM元素内容序列化为字符串,用于ajax请求。通过使用serialize()方法,可以提交本页面的所有域,代码如下:

当单击“提交”按钮后,所有属于form1的表单元素都能提交到后台,即使在表单中再增加字段,脚本仍然能够使用,并且不需要做其他多余工作。

用字符串方式时,需要注意对字符编码(中文问题),如果不希望编码带来麻烦,可以使用serialize()方法,它会自动编码。

因为serialize()方法作用于JQuery对象,所以不光只有表单能使用它,其他选择器选取的元素也都能使用它,如以下JQuery代码:

$(":checkbox,:radio")serialize()

把复选框和单选框的值序列化为字符串形式,只会将选中的值序列化。

在JQuery中还有一个与serialize()类似的方法--serializeArray(),该方法不是返回字符串,而是将DOM元素序列化后,返回JSON格式的数据。JQuery代码如下:

var fields = $(":checkbox,:radio")serializeArray()

consolelog(fields); //用FireBug输出

$param()方法是serialize()方法的核心,用来对一个数组或对象按照key/value进行序列化。

比如将一个普通的对象序列化:

var obj = {a:1,b:2,c:3}

var k = $param(obj)

alert(k); //输出a=1&b=2&c=3

请求后台的servlet 中的方法后,响应回来的值,data就是这个值

拓展:

1、当Web刚开始被用来传送服务时,服务提供者就已经意识到了动态内容的需要。Applet是为了实现这个目标的一种最早的尝试,它主要关注使用客户端平台来交付动态用户体验。与此同时,开发人员也在研究如何使用服务器平台实现这个目标。开始的时候,公共网关接口(Common Gateway Interface ,CGI)脚本是生成动态内容的主要技术。

2、虽然使用得非常广泛,但CGI脚本技术有很多的缺陷,这包括平台相关性和缺乏可扩展性。为了避免这些局限性,Java Servlet技术因应而生,它能够以一种可移植的方法来提供动态的、面向用户的内容。处理用户请求。

>

setAttribute这个方法,在JSP内置对象session和request都有这个方法,这个方法作用就是保存数据,然后还可以用getAttribute方法来取出。

比如现在又个User对象,User curruser = new User("zhangsan", 20, "男");

1,requestsetAttribute(“curruser”, curruser)这个方法是将curruser这个对象保存在request作用域中,然后在转发进入的页面就可以获取到你的值,如果你会一些框架的话,那些框架标签也可以获取到,比如struts标签,还有jstl。如果这你都不会的话,那么你可以在jsp页面编写java小脚本来获取:<% User myuser = (User)requestgetAttribute("curruser")%>,在jsp页面显示值:<%=myusergetName()%>。

2,sessionsetAttribute("curruser", curruser)。这个方法和上面唯一的区别就是作用域,就是在你整个程序启动的时候,如果在session中保存了数据,那么在你这个无论你在哪个页面,在什么时候都可以获取到这个值,全局的,只要你的这个程序是启动的。session默认的过期时间是30分钟,过期无效,可以去修改这个值。

以上就是关于js脚本调用servlet不成功,不知道问题出在哪儿了全部的内容,包括:js脚本调用servlet不成功,不知道问题出在哪儿了、sevlet能不能直接运行需不需要环境支持、JAVA中后台的Servlet程序怎么将结果返回给前台的页面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9622667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存