2 lihfxy lihfxy 于 2016.03.11 16:37 提问

JSP页面的onclick()怎样调用Java方法?
jsp
 @RequestMapping("/mail")
public class Mail {
    @RequestMapping("/mailto")
    public void mail(){

      MailSenderInfo mailInfo = new MailSenderInfo(); 
      mailInfo.setMailServerHost("smtp.yeah.net"); 
      mailInfo.setMailServerPort("25"); 
      mailInfo.setValidate(true); 
      mailInfo.setUserName("123456"); 
      mailInfo.setPassword("456789");
      mailInfo.setFromAddress("123456@yeah.net"); 
      mailInfo.setToAddress("132456@163.com"); 
      mailInfo.setSubject("有新申请"); 
      mailInfo.setContent("content"); 

      SimpleMailSender sms = new SimpleMailSender();
         sms.sendTextMail(mailInfo); 

    }
}

这是我一个Java类中的一个方法,是用来发送邮件的,现在我想在一个JSP页面中添加一个button,并且在点击时调用这个方法

 <input type="button" value="发送邮件" onclick="mail()">

请问我的后台方法function mail()应该怎么写呢?

10个回答

qq_23360907
qq_23360907   2016.03.11 16:42
已采纳

mail()是你用javascript写的一个function。你可以在这个function里面写一个ajax方法,在ajax方法的url里面写你后台的方法就可以访问了,这是异步。
还有就是提交from表单。

qq_23360907
qq_23360907 回复lihfxy: function mail(){ var data = "time=" + new Date().getTime(); $.ajax({ type : "GET", dataType : "json", encodeURL : true, url : contextpath + "Action!mhod",//这个是你action路径和方法 data : data, success : function(res, states) {//执行ajax之后成功之后的操作 alert("success"); },error(){//执行ajax失败后的操作 alert("error"); } });
接近 2 年之前 回复
lihfxy
lihfxy function mail(){ $.ajax({ url:encodeURI(encodeURI('/SpringMVC/mail/mailto')), type:'post', cache:false, success:function(data) { } }) }
接近 2 年之前 回复
lihfxy
lihfxy 我对ajax不是很了解,楼下给的链接看得也是一头雾水,自己参照别的例子写了一个,麻烦帮忙看下对不对:
接近 2 年之前 回复
Yiran8935
Yiran8935   2016.03.11 16:41

传参调用ajax请求啊

chen18677338530
chen18677338530 通过ajax去访问这个方法
接近 2 年之前 回复
lihfxy
lihfxy 回复Yiran8935: 额,还是不行
接近 2 年之前 回复
Yiran8935
Yiran8935 function mail(){ $.ajax({ url:'/SpringMVC/mail/mailto', type:'post', cache:false, success:function(data) { } }) } 先这样试试
接近 2 年之前 回复
lihfxy
lihfxy function mail(){ $.ajax({ url:encodeURI(encodeURI('/SpringMVC/mail/mailto')), type:'post', cache:false, success:function(data) { } }) }
接近 2 年之前 回复
lihfxy
lihfxy 我对ajax不是很了解,自己参照别的例子写了一个,麻烦帮忙看下对不对:
接近 2 年之前 回复
showbo
showbo   Ds   Rxr 2016.03.11 16:50

用ajax请求jsp页面,jsp页面调用你的这个发邮件函数,要调用服务器端资源或者方法必须请求服务器才行

http://www.w3school.com.cn/jquery/ajax_ajax.asp

lihfxy
lihfxy 回复无聊码农: 我是在一个原有demo的基础上改动添加功能的,页面上原本就有一个ajax请求的后台方法,所以应该是已经导入了,但是我参照着例子写,就是无法触发调用
一年多之前 回复
showbo
showbo 回复lihfxy: 导入了jquery没有,url地址不需要encodeURI编码
接近 2 年之前 回复
lihfxy
lihfxy function mail(){ $.ajax({ url:encodeURI(encodeURI('/SpringMVC/mail/mailto')), type:'post', cache:false, success:function(data) { } }) }
接近 2 年之前 回复
lihfxy
lihfxy 我对ajax不是很了解,你给的链接好像也用不上,自己参照别的例子写了一个,麻烦帮忙看下对不对:
接近 2 年之前 回复
y7595121
y7595121   2016.03.11 16:58

异步的用ajax请求,不异步的话你在js方法里写
function mail(){
window.location = "项目路径/mail/mailto";
}

lihfxy
lihfxy 我试了一下,没有用,用window.location.href=也没有用
接近 2 年之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.03.11 17:16

发请求,,form表单可以,,ajax也可以,,或者使用原生的js发送http请求

wh15842400641
wh15842400641   2016.03.11 17:37

如果用ajax请求的话:
function mail(){
var xhr;
xhr = new XMLHttpRequest();
xhr.open("Get", "项目路径/mail/mailto", true);
}
如果不用就用上边@花落勿痕的就行了
不过我看你的代码应该是用了springmvc,如果你的web配置文件是接收*.do的话你的url得写成”项目路径/mail/mailto.do"同时你代码这里
@RequestMapping("/mailto")也要改成@RequestMapping("/mailto.do")

u012176588
u012176588   2016.03.11 17:46

如果你java代码中jsp中又想调用可以试试小脚本<%java代码%>

u012176588
u012176588   2016.03.11 17:51

在jsp中调用 java代码要先引用java的包哦:如<%@ page import= "www.com.要调用的java类 "%>写在jsp最上面然后:
<%
Mail mails = new Mail();
mails.mail();
%>这里面就可以写java代码,不知道这样行不行勒。。

lihfxy
lihfxy 之前不能调用的时候我试过直接在JSP页面上写,结果整个页面上其他的后台方法都用不了了。。。
接近 2 年之前 回复
qq_18277503
qq_18277503   2016.03.12 15:35

就是使用ajax进行异步请求,在url中调用后台方法即可

beacon_2011
beacon_2011   Rxr 2016.03.12 17:12

ajax请求,访问后台方法就可以

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!