本来搭好了环境是用.jsp来完成这项工作的,奈何写好后一直无法连接数据库获取数据,折腾了一天试了各种方法都不行,最终放弃了….改用.html代替
先发下我的目录吧,仅供参考
**
springmvc配置:
使用.jsp时如下:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/" />
<property name="suffix" value=".jsp" />
</bean>
改为html后男票给了段代码,据说里面也有很深的坑..我就没有细究了,直接拿来用
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="order" value="10"></property>
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="contentType" value="text/html"></property>
</bean>
需要下载jquery-3.2.1.min.js并在html中导入
<script src="/js/jquery-3.2.1.min.js"></script>
index界面代码:
id:<input type="text" name="userid" id="p1"/><br/>
账号:<input type="text" name="username" id="p2"/><br/>
密码: <input type="text" name="password" id="p3"/><br/>
<input type="submit" value="submit" id="register"/>
<input type="submit" value="delete" id="delete"/>
controller中index的代码(也是我设置的Tomcat的默认访问路径):
@RequestMapping(value = "/index")
public ModelAndView index() {
ModelAndView mav = new ModelAndView();
mav.setViewName("index.html");//index.jsp
return mav;
}
下面使用ajax来传递数据,这里我用delete方式做例子
一、post方式
index.html代码:
<script>
$("#delete").click(function () {
var jsonData={};
jsonData.userid=$("#p1").val();
$.ajax({
type: "get",
url: "/doDelete",
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(jsonData),
success: function (data) {
if(data == -1)
alert("该用户不存在");
else
$(location).attr('href', 'bank');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
});
});
</script>
controller代码
@RequestMapping(value = "/doDelete")
@ResponseBody
public Integer doDelete( @RequestBody User user) {
Integer result;
Integer userid=user.getUserid();
try{
result=userService.delete(userid);
}catch(Exception e){
result = -1;
}
System.out.println(result+" "+userid);
return result;
}
这里有必要附上add的方法给大家做参考,因为jsonData此处为一个对象,看它获取userid调用的
jsonData.userid=$("#p1").val();
就可以知道。而之前ssm给的默认代码里,delete传入的是Interger,而add传入的是**对象**user,所以add中可以直接使用,而delete中需要先传入对象,再从对象中getuserid来进行接下来的操作,如果直接将传入类型定为Interger会出现数据类型不匹配的问题。
ajax
<script>
$(document).ready(function() {
$("#register").click(function () {
var jsonData={};
jsonData.username=$("#p2").val();
jsonData.password=$("#p3").val();
$.ajax({
type: "post",
url: "/doRegister",
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(jsonData),
success: function (data) {
if(data == -1)
alert("用户名已经被注册");
else
$(location).attr('href', 'bank');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
});
});
</script>
controller
@RequestMapping(value = "/doRegister",method = RequestMethod.POST)
@ResponseBody
public Integer doRegister(@RequestBody User user) {
Integer result;
try{
result=userService.add(user);
}catch(Exception e){
result = -1;
}
return result;
}
二、GET方式
真的没写过get方式啊啊啊啊啊啊,上网查大家也都是用的post啊啊啊啊啊,此处艰辛难以言表,又用了半天的时间才写出来……据男票大大说采用的是restful的(风格?)反正我又发挥了我的观察和模仿能力【微笑】,最后男票大大亲临才给我讲明白的…
ajax:
$("#delete").click(function () {
$.ajax({
url: "/deDelete/"+$("#p1").val(),
method : "get" ,
data : { },
dataType : "json",
success : function(data){
if(data == -1)
alert("该用户不存在");
else
$(location).attr('href', 'bank');
},
error : function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
})
});
controller:
@RequestMapping(value="/deDelete/{userid}",method=RequestMethod.GET,produces="application/json;charset=UTF-8")
public @ResponseBody Integer doDelete(@PathVariable("userid") Integer userid){
Integer result;
try{
result=userService.delete(userid);
}catch(Exception e){
result = -1;
}
System.out.println(result+" "+userid);
return result;
}
这里要注意get方式url的书写方式,因为需要在url中显示获取的信息所以不需要像post那样用变量来获取userid了,直接写在url后面就可以了,注意是附在引号外面的。我卡在这里主要是基础不扎实的缘故…get和post一直混乱分不清。
然后就是要注意url和controller中value值的对应
以及@PathVariable("userid")
,这里与post区别较大
其实到现在很多注解我都是知其然不知其所以然…基本也是模仿着别人写的,自己写代码的时间太少了所以经验不足,以后要多加努力哦~~不管怎么说到现在进步都很多了。
最后附上ssm增加、删除两份的完整代码
访问index.html,输入数据,选择注册或者删除,然后跳转到bank.html界面显示数据库中的所有用户数据
controller:
@Controller
@RequestMapping("")
public class DemoAction {
private UserService userService;
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
//doregister
@RequestMapping(value = "/doRegister",method = RequestMethod.POST)
@ResponseBody
public Integer doRegister(@RequestBody User user) {
Integer result;
try{
result=userService.add(user);
}catch(Exception e){
result = -1;
}
return result;
}
//doDelete
/* @RequestMapping(value = "/doDelete")
@ResponseBody
public Integer doDelete( @RequestBody User user) {
Integer result;
Integer userid=user.getUserid();
try{
result=userService.delete(userid);
}catch(Exception e){
result = -1;
}
System.out.println(result+" "+userid);
return result;
}*/
@RequestMapping(value="/deDelete/{userid}",method=RequestMethod.GET,produces="application/json;charset=UTF-8")
public @ResponseBody Integer doDelete(@PathVariable("userid") Integer userid){
Integer result;
try{
result=userService.delete(userid);
}catch(Exception e){
result = -1;
}
System.out.println(result+" "+userid);
return result;
}
//out
@RequestMapping(value = "/out",method = RequestMethod.POST)
@ResponseBody
public List<User> out() {
List<User> us=new ArrayList<User>() ;
us=userService.list();
return us;
}
//http://localhost/index
@RequestMapping(value = "/index")
public ModelAndView index() {
ModelAndView mav = new ModelAndView();
mav.setViewName("index.html");//index.jsp
return mav;
}
//http://localhost/bank
@RequestMapping(value = "/bank")
public ModelAndView bank() {
ModelAndView mav = new ModelAndView();
mav.setViewName("bank.html");//bank.jsp
return mav;
}
}
index.html:
<!DOCTYPE html>
<!-- saved from url=(0098)http://www.17sucai.com/preview/501914/2017-05-17/p2p%E6%89%8B%E6%9C%BA%E5%85%A8%E7%AB%99/info.html -->
<html>
<head>
<script src="/js/jquery-3.2.1.min.js"></script>
</head>
<body>
id:<input type="text" name="userid" id="p1"/><br/>
账号:<input type="text" name="username" id="p2"/><br/>
密码: <input type="text" name="password" id="p3"/><br/>
<input type="submit" value="submit" id="register"/>
<input type="submit" value="delete" id="delete"/>
<script>
$(document).ready(function() {
$("#register").click(function () {
var jsonData={};
jsonData.username=$("#p2").val();
jsonData.password=$("#p3").val();
$.ajax({
type: "post",
url: "/doRegister",
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(jsonData),
success: function (data) {
if(data == -1)
alert("用户名已经被注册");
else
$(location).attr('href', 'bank');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
});
});
/* $("#delete").click(function () {
var jsonData={};
jsonData.userid=$("#p1").val();
$.ajax({
type: "get",
url: "/doDelete",
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(jsonData),
success: function (data) {
if(data == -1)
alert("该用户不存在");
else
$(location).attr('href', 'bank');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
});
});
*/
$("#delete").click(function () {
$.ajax({
url: "/deDelete/"+$("#p1").val(),
method : "get" ,
data : { },
dataType : "json",
success : function(data){
if(data == -1)
alert("该用户不存在");
else
$(location).attr('href', 'bank');
},
error : function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
})
});
});
</script>
</body>
</html>
bank.html:
<!DOCTYPE html>
<!-- saved from url=(0098)http://www.17sucai.com/preview/501914/2017-05-17/p2p%E6%89%8B%E6%9C%BA%E5%85%A8%E7%AB%99/info.html -->
<html>
<head>
<script src="/js/jquery-3.2.1.min.js"></script>
</head>
<body>
id:<input type="text" name="userid" id="p1"/><br/>
账号:<input type="text" name="username" id="p2"/><br/>
密码: <input type="text" name="password" id="p3"/><br/>
<input type="submit" value="submit" id="register"/>
<input type="submit" value="delete" id="delete"/>
<script>
$(document).ready(function() {
$("#register").click(function () {
var jsonData={};
jsonData.username=$("#p2").val();
jsonData.password=$("#p3").val();
$.ajax({
type: "post",
url: "/doRegister",
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(jsonData),
success: function (data) {
if(data == -1)
alert("用户名已经被注册");
else
$(location).attr('href', 'bank');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
});
});
/* $("#delete").click(function () {
var jsonData={};
jsonData.userid=$("#p1").val();
$.ajax({
type: "get",
url: "/doDelete",
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(jsonData),
success: function (data) {
if(data == -1)
alert("该用户不存在");
else
$(location).attr('href', 'bank');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
});
});
*/
$("#delete").click(function () {
$.ajax({
url: "/deDelete/"+$("#p1").val(),
method : "get" ,
data : { },
dataType : "json",
success : function(data){
if(data == -1)
alert("该用户不存在");
else
$(location).attr('href', 'bank');
},
error : function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
})
});
});
</script>
</body>
</html>
userSevice:
@Service
public class UserService {
private UserMapper userMapper;
@Autowired
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}
public List<User> list(){
return userMapper.list();
}
public Integer add(User user){
return userMapper.insert(user);
}
public Integer delete(Integer userid){
return userMapper.deleteByPrimaryKey(userid);
}
}
mapper和user我就不写了..太简单了
以上是这三天的痛苦挣扎结果…虽然很简单的东西但是因为没有基础做起来还是真的很辛苦的,遇到了无数个报错,真的是有时候都要放弃了…
至少写完后整个流程终于清楚多了…可喜可贺= =干巴爹~~