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
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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后希望可以帮助到大家!
千千万万要记得:多刷题!!多刷题!!
之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!
篇幅有限,以下只能截图分享部分的资源!!
(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)
(2)刷的算法题(还有左神的算法笔记)
(3)面经+真题解析+对应的相关笔记(很全面)
(4)视频学习(部分)
ps:当你觉得学不进或者累了的时候,视频是个不错的选择
在这里,最后只一句话:祝大家offer拿到手软!!
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
,算法才是程序员的灵魂!!!!
篇幅有限,以下只能截图分享部分的资源!!
(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)
[外链图片转存中…(img-JEY52Q4f-1712871178646)]
(2)刷的算法题(还有左神的算法笔记)
[外链图片转存中…(img-4IGlq4tl-1712871178646)]
(3)面经+真题解析+对应的相关笔记(很全面)
[外链图片转存中…(img-fvhoCMOS-1712871178646)]
(4)视频学习(部分)
ps:当你觉得学不进或者累了的时候,视频是个不错的选择
在这里,最后只一句话:祝大家offer拿到手软!!
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-CfwK7cnV-1712871178647)]