如果您想了解具有JSP/Servlet和Ajax的简单计算器的相关知识,那么本文是一篇不可错过的文章,我们将对jsp中用servlet简易计算器进行全面详尽的解释,并且为您提供关于1.(ajaxSta
如果您想了解具有JSP / Servlet和Ajax的简单计算器的相关知识,那么本文是一篇不可错过的文章,我们将对jsp中用servlet简易计算器进行全面详尽的解释,并且为您提供关于1.(ajaxStart和ajaxSend)和2.(ajaxStop和ajaxComplete)之间有什么区别?、Ajax + jsp +servlet 中文乱码问题解决办法、Ajax+Jsp+servlet+json技术的使用、ajax+jsp+servlet+mysql实现登陆验证的有价值的信息。
本文目录一览:- 具有JSP / Servlet和Ajax的简单计算器(jsp中用servlet简易计算器)
- 1.(ajaxStart和ajaxSend)和2.(ajaxStop和ajaxComplete)之间有什么区别?
- Ajax + jsp +servlet 中文乱码问题解决办法
- Ajax+Jsp+servlet+json技术的使用
- ajax+jsp+servlet+mysql实现登陆验证
具有JSP / Servlet和Ajax的简单计算器(jsp中用servlet简易计算器)
我想在jsp中创建一个简单的计算器。将有两个用于数字的文本框和一个添加按钮。理想情况下,我希望答案不重新加载就显示在页面中,但是从我得到的答案来看,它似乎对我的规模来说太大了。我可以想到:1)将答案打印到第三个文本框(有可能吗?),或者以某种方式将答案与相同的页面(带有添加按钮和全部)一起加载(并能够输入不同的数字,依此类推)
。
您能建议一个好的方法吗?
答案1
小编典典对于我的规模来说似乎太大了
这实际上取决于上下文和功能要求。这是非常简单和琐碎的。它更多的声音一样,它的“太多信息”为你和你实际需要学习不同的概念(HTTP,HTML,CSS,JS,Java和JSP,Servlet的,AJAX,JSON等)
单独
使大局观(所有这些语言/技术的总和)变得更加明显。您可能会发现此答案很有用。
无论如何,这是仅使用JSP / Servlet而不使用Ajax的方法:
calculator.jsp
:
<form id="calculator" action="calculator" method="post"> <p> <input name="left"> <input name="right"> <input type="submit" value="add"> </p> <p>Result: <span id="result">${sum}</span></p></form>
用CalculatorServlet
其被映射上url-pattern
的/calculator
:
@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Integer left = Integer.valueOf(request.getParameter("left")); Integer right = Integer.valueOf(request.getParameter("right")); Integer sum = left + right; request.setAttribute("sum", sum); // It''ll be available as ${sum}. request.getRequestDispatcher("calculator.jsp").forward(request, response); // Redisplay JSP.}
使Ajaxical的东西起作用也不难。只需在JSP的HTML中包含以下JS <head>
(请向右滚动以查看代码注释,其中解释了每一行的作用):
<script src="http://code.jquery.com/jquery-latest.min.js"></script><script> $(document).ready(function() { // When the HTML DOM is ready loading, then execute the following function... $(''#calculator'').submit(function() { // Locate HTML element with ID "calculator" and execute the following function on its "submit" event... $form = $(this); // Wrap the form in a jQuery object first (so that special functions are available). $.post($form.attr(''action''), $form.serialize(), function(responseText) { // Execute Ajax POST request on URL as set in <form action> with all input values of the form as parameters and execute the following function with Ajax response text... $(''#result'').text(responseText); // Locate HTML element with ID "result" and set its text content with responseText. }); return false; // Prevent execution of the synchronous (default) submit action of the form. }); });</script>
并doPost
如下更改最后两行:
response.setContentType("text/plain"); response.setCharacterEncoding("UTF-8"); response.getWriter().write(String.valueOf(sum));
您甚至可以对其进行条件检查,以便您的表单在用户禁用JS的情况下仍然可以使用:
if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) { // Ajax request. response.setContentType("text/plain"); response.setCharacterEncoding("UTF-8"); response.getWriter().write(String.valueOf(sum)); } else { // Normal request. request.setAttribute("sum", sum); request.getRequestDispatcher("calculator.jsp").forward(request, response); }
1.(ajaxStart和ajaxSend)和2.(ajaxStop和ajaxComplete)之间有什么区别?
基本上就是这个问题(括号很重要)
Ajax + jsp +servlet 中文乱码问题解决办法
相信大家在使用上面的方法的时候肯定遇到多中文乱码的问题,现在就来分享一下我的解决的心得
首先,要让页面支持中文的显示我们就得设置页面的编码为GB2312或者GBK,如下
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
这样页面上面显示中文就没有问题了,但是接下来会发现接受的时候会出现接受中文乱码,我的解决方法是这样的
request.setCharacterEncoding("GBK");
然后后面直接用
request.getParameter();接受中文,完全没有问题(有人也用getBytes 进行转码,我一般不这样用,每个参数都这样转感觉很烦),但是又会发现,一般的表单的数据这样接受没有问题,但是一遇到Ajax 提交数据和这提交json数据来的时候就会又一次出现乱码,这时该怎么解决呢
,没有办法,ajax的数据只能够转码了,
用 String p_name = new String(req.getParameter("p_name").getBytes("GBK"),"UTF-8");获得数据
因为设置了request 设置了GBK(我们之前设置了request.setCharacterEncoding("GBK");),再在转码是把GBK转成UTF-8(我感觉原因是这样的,方法是我不断的实验出的,可行,原因自己猜测的),基本上没有问题了
希望对大家有所帮助
看到这篇文章的个各位,真是对不起,这里本人犯了一个错误,就是在使用request.setCharacterEncoding("GBK");接受中文是有条件的,必须前方是post提交,这个之前说漏了
对不起,这完全是本人的失误
Ajax+Jsp+servlet+json技术的使用
Ajax+Jsp+servlet+json技术的使用
http://blog.sina.com.cn/s/blog_ad188d2b01017bjo.html
ajax+jsp+servlet+mysql实现登陆验证
ajax+jsp+servlet+MysqL实现登陆验证
找了很多网上的代码,多半是不能用的,不是这有错就是那有错,只好自己写一个。亲自试验,绝对可以用。
1、首先在MysqL创建一个user的数据库,在user数据库创建一个users的表,设计表,字段为name varchar类型;pass verchar类型;添加数据name 为aa ,pass也是aa。
2、在项目的WebContent–WEB-INF–lib下导入一个数据库连接驱动的jar包,mysql-connector-java-5.1.33-bin.jar网上下载,解压到lib文件夹即可。
3、编写JSP页面。
<div><form id="myform" action="" method="post"> 账号:<span id="tdName"> <input type="text" id="userName" name="name" /> </span><br><br> <span id="pwdBox"> 密码:<span id="tdPass"> <input type="password" id="userPass" name="pass" /></span><br><br> </span> <span id="state"></span><br> <div align="center" id="buttom" > <span ><input type="button" onClick="check()" value="登录" /></span> </div> </form> </div>
4、编写AJAX函数check() 和回调函数,放在刚才的JSP页面的head部分。
<script type="text/javascript"> var xmlHttp=false; function createXMLHttpRequest() { if (window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else if (window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); } } function check(){ createXMLHttpRequest(); //调用创建XMLHttpRequest对象方法 xmlHttp.onreadystatechange=callback; //设置回调函数 nameStr=myform.name.value; passstr=myform.pass.value; var url="check?name="+nameStr+"&pass="+passstr; //向servlet/check发送请求的URL xmlHttp.open("get",url); //向服务器端发送请求 xmlHttp.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8"); xmlHttp.send(null); } function callback(){ if(xmlHttp.readyState==4){ if(xmlHttp.status==200){ var str = xmlHttp.responseText; alert(str); if(str.length==2){ //如果返回的字符串长度为2表示用户存在可以登录成功 document.getElementById("state").innerHTML="已登录的用户"; var tdName=document.getElementById("tdName"); tdName.replaceChild(document.createTextNode(nameStr),tdName.firstChild);//替换节点 var tdPass=document.getElementById("pwdBox"); tdPass.innerHTML=""; var trButtom=document.getElementById("buttom"); trButtom.innerHTML='<font color=\"red\">恭喜你成功登录</font> <div> <input type="button" onclick="exit()" value="退出" /></div>'; trButtom.name="yes"; }else{ document.getElementById("state").innerHTML="<font color=\"red\">用户名或密码有误</font>"; } } } } </script>
5、编写servlet
package servlet; import beans.sqlCheck; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class Check extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException { //获取客户端请求的参数,并进行判断。 //如果用户存在,返回一个长度为2的字符串,如果用户不存在返回一个长度为1的字符串。 PrintWriter out = response.getWriter(); String name=request.getParameter("name");//取得用户名参数 String pass=request.getParameter("pass");//取得用户密码参数 sqlCheck sc=new sqlCheck(); sc.setName(name);//为JavaBean设置name属性 sc.setPass(pass);// 为JavaBean设置pass属性 try{ if(sc.check()){ //如果用户存在 out.print("aa"); //返回长度为2的一个字符串 request.getSession().setAttribute("name",name ); }else{ out.print("a"); //返回长度为1的一个字符串 } }catch(Exception e){ out.print(e.toString()); } out.flush(); out.close(); } public void doPost(HttpServletRequest request,IOException { doGet(request,response); } }
6、编写sqlCheck类
package beans; import java.sql.*; import javax.servlet.servletexception; import javax.mail.Session; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.omg.CORBA.Request; public class sqlCheck { private boolean ok=false;//状态变量 private String name=null; private String pass=null; public boolean check()throws Exception{ checksql(this.name,this.pass); return this.ok; } public void setName(String name){ this.name = name; } public String getName(){ return name; } public void setPass(String pass){ this.pass = pass; } public String getpass(){ return pass; } //查询数据库,如果数据库没有这个用户就把状态变量设置为false,如果有则设置为true private void checksql(String name,String pass) throws Exception{ Class.forName("com.MysqL.jdbc.Driver"); String url="jdbc:MysqL://localhost:3306/user?user=root&password=数据库连接密码&characterEncoding=UTF-8"; Connection con=DriverManager.getConnection(url); Statement st=con.createStatement(); ResultSet rs=st.executeQuery("select * from users where name='"+name+"' and pass='"+pass+"'"); if(rs.next()){//表示有记录 // this.ok=true; }else{ this.ok=false; } } }
`7、配置web.xml“
<servlet-mapping> <servlet-name>check</servlet-name> <url-pattern>/check</url-pattern> </servlet-mapping> <servlet> <servlet-name>check</servlet-name> <servlet-class>servlet.Check</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
“`
关于具有JSP / Servlet和Ajax的简单计算器和jsp中用servlet简易计算器的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于1.(ajaxStart和ajaxSend)和2.(ajaxStop和ajaxComplete)之间有什么区别?、Ajax + jsp +servlet 中文乱码问题解决办法、Ajax+Jsp+servlet+json技术的使用、ajax+jsp+servlet+mysql实现登陆验证等相关内容,可以在本站寻找。
本文标签: