Springmvc入门及增删改查

package com.sjy.controller;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

public class HelloController {

@RequestMapping(“/hello”)

public String hello(){

return “hello”;

}

}

配置项目

锤子旁边配置tomcat,点击编辑配置,点击+,如图选择

配置tomcat路径

第四个已经编译好了,运行起来较快 

选择浏览器和更新类和资源(修改页面内容自动更新)

启动项目会报错

报错原因

前后端交互json则不需要

<dependency>

          <groupId>jstl</groupId>

          <artifactId>jstl</artifactId>

          <version>1.2</version>

      </dependency>

      <dependency>

          <groupId>taglibs</groupId>

          <artifactId>standard</artifactId>

          <version>1.1.2</version>

      </dependency>

重新启动项目

三、Springmvc常用注解及返回值处理


1.建立BookController类

package com.ltf.controller;

import com.ltf.model.Book;

import com.ltf.service.BookService;

import com.ltf.util.PageBean;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

@Controller

@RequestMapping(“/book”)

public class BookController {

@Autowired

private BookService bookService;

@RequestMapping(“/preSave”)

public String preSave(Book book, HttpServletRequest request){

if(book.getBid() != null){

Book b = this.bookService.selectByPrimaryKey(book.getBid());

request.setAttribute(“book2”,b);

}

return “bookEdit”;

}

@RequestMapping(“/add”)

public String add(Book book){

this.bookService.insert(book);

return “redirect:/book/list”;

}

@RequestMapping(“/del/{bid}”)

public String del(@PathVariable(value = “bid”) Integer bid){

this.bookService.deleteByPrimaryKey(bid);

return “redirect:/book/list”;

}

@RequestMapping(“/list”)

public String list(HttpServletRequest request,Book book){

PageBean pageBean = new PageBean();

pageBean.setRequest(request);

Map map = new HashMap();

map.put(“bname”,“%圣墟%”);

List list = this.bookService.listPager(map, pageBean);

request.setAttribute(“bookList”,list);

request.setAttribute(“pageBean”,pageBean);

return “bookList”;

}

@RequestMapping(“/edit”)

public String edit(Book book){

this.bookService.updateByPrimaryKeySelective(book);

return “redirect:/book/list”;

}

}

@Controller :标识当前controller类交给spring进行管理

@RequestMapping:

①此注解标记在类上面,那么相当于struts中命名空间的概念sy/book.action

②此注解标记在方法上,仅代表浏览器访问地址

springMVC针对于结果的处理有四种形式:

①转发到页面 :“hello”

②重定向到页面  :“redirect:hello”

③转发到子控制器 :“forward:/book/list”

④重定向到子控制器  :return “redirect:/book/list”

删除方法中

@RequestMapping(“/del/{bid}”)和@PathVariable(value = “bid”) Integer bid

第一个的pid要与第二个的pid一致,否则拿不到

@PathVariable将浏览器中最后的参数进行封装获取

2.建立查询和修改的页面

bookList

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

<%–<%@ taglib uri=“/zking” prefix=“z” %>–%>

Insert title here

function add(){

// window.location.href = “bookEdit.jsp”;

window.location.href=“${pageContext.request.contextPath}/book/preSave”;

}

function update(bid){

window.location.href = “${pageContext.request.contextPath}/book/preSave?bid=”+bid;

}

function del(bid){

window.location.href = “${pageContext.request.contextPath}/book/del/”+bid;

}

<form action=“${pageContext.request.contextPath}/book/list”

method=“post”>

书名: <input type=“submit”

value=“确定”>

<button οnclick=“add();”>新增

编号

名称

价格

操作

<c:forEach items=“${bookList }” var=“b”>

${b.bid }

${b.bname }

${b.price }

<button οnclick=“update(${b.bid });”>修改   

<button οnclick=“del(${b.bid });”>删除

</c:forEach>

<%–<z:page pageBean=“${pageBean }”></z:page>–%>

bookEdit

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

Insert title here

function doSubmit(bid){

var bookForm = document.getElementById(“bookForm”);

if(bid){

//修改时候执行

bookForm.action = ‘${pageContext.request.contextPath}/book/edit’;

}else{

//新增时候执行

bookForm.action = ‘${pageContext.request.contextPath}/book/add’;

}

bookForm.submit();

}

bid:

bname:

price:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后希望可以帮助到大家!

千千万万要记得:多刷题!!多刷题!!

之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!

篇幅有限,以下只能截图分享部分的资源!!

(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)

image

(2)刷的算法题(还有左神的算法笔记)

image

(3)面经+真题解析+对应的相关笔记(很全面)

image

(4)视频学习(部分)

ps:当你觉得学不进或者累了的时候,视频是个不错的选择

在这里,最后只一句话:祝大家offer拿到手软!!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

,算法才是程序员的灵魂!!!!

篇幅有限,以下只能截图分享部分的资源!!

(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)

[外链图片转存中…(img-JEY52Q4f-1712871178646)]

(2)刷的算法题(还有左神的算法笔记)

[外链图片转存中…(img-4IGlq4tl-1712871178646)]

(3)面经+真题解析+对应的相关笔记(很全面)

[外链图片转存中…(img-fvhoCMOS-1712871178646)]

(4)视频学习(部分)

ps:当你觉得学不进或者累了的时候,视频是个不错的选择

在这里,最后只一句话:祝大家offer拿到手软!!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-CfwK7cnV-1712871178647)]

  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值