springmvc CRUD控制器写法和jsp页面写法 总结大全。

本例介绍控制器和jsp页面的写法,分两部分。

本文中,jsp页面,一共有3个,浏览页面,增加页面,修改页面。

控制器一共有6个。浏览getAuthors,增加页面跳转authorAdd,增加业务authorSave,修改页面跳转authorModify,修改业务authorUpdate,删除业务authorDel。

一、控制器

1,入参。

其中控制器中,需要带id传值的,有2个,一个删除业务,一个是修改页面跳转。这里两个同样需要路径参数注解。

带bean传值的,有3个,一个是增加页面跳转,一个是增加业务,一个是修改业务。

带BindingResult,error返回值的,有2个,一个是增加业务。一个是修改业务。

带Valid校验bean的,也是2个,一个是增加业务。一个是修改业务。

带路径参数注解 @PathVariable的,有2个。一个是删除业务,一个是修改页面跳转。

带请求参数注解 @RequestParam 的,有1个,浏览所有getAuthors。且该请求参数后需要跟着实参。

代码如下:

@Controller
public class ZhouyiAuthorController {

    @Autowired
    private ZhouyiAuthorService zhouyiAuthorService;

    @RequestMapping("/getAuthors")
    public ModelAndView getAuhoros(@RequestParam(value="pn",defaultValue = "1")Integer pn) {
        PageHelper.startPage(pn, 12);
        ModelAndView mv = new ModelAndView("zhouyiAuthor");
        List<ZhouyiAuthor> zhouyiContentAuthors = zhouyiAuthorService.getZhouyiContentAuthors();
        PageInfo page = new PageInfo(zhouyiContentAuthors,7);
        mv.addObject("pageinfo", page);
        return mv;
    }

    @RequestMapping("/zhouyiAuthorDel/{id}")
    public ModelAndView zhouyiAuthorDel(@PathVariable("id") Integer id) {
        ModelAndView mv = new ModelAndView();
        List<ZhouyiAuthor> zhouyiAuthorsFromContents = zhouyiAuthorService.getZhouyiAuthorsFromContents(id);
        if(zhouyiAuthorsFromContents.size()>0) {
            mv.addObject("errors", "*该作者下有子类目,不允许删除!");
            mv.setViewName("forward:/getAuthors");
            return mv;
        }
        int deleteZhouyiContentAuthor = zhouyiAuthorService.deleteZhouyiContentAuthor(id);
        if(deleteZhouyiContentAuthor!=1) {
            mv.addObject("errors", "*删除异常!");
            mv.setViewName("forward:/getAuthors");
            return mv;
        }

        mv.setViewName("redirect:/getAuthors");
        return mv;
    }

    @RequestMapping("/zhouyiAuthorAdd")
    public ModelAndView zhouyiAuthorAdd(ZhouyiAuthor zhouyiAuthor){
        ModelAndView mv = new ModelAndView("zhouyiAuthorAdd");
        return mv;
    }

    @RequestMapping("/zhouyiAuthorSave")
    public ModelAndView zhouyiAuthorSave(@Valid ZhouyiAuthor zhouyiAuthor,BindingResult errors) {
        ModelAndView mv = new ModelAndView();
        if(errors.getFieldErrorCount()>0) {
            for (FieldError err : errors.getFieldErrors()) {
            System.out.println("err.field:= "+err.getField()+ "  | message:==="+ err.getDefaultMessage());
            }
            mv.setViewName("zhouyiAuthorAdd");
            return mv;
        }
        zhouyiAuthorService.addZhouyiContentAuthor(zhouyiAuthor);
        mv.setViewName("forward:/getAuthors");
        return mv;
    }

    @RequestMapping("/zhouyiAuthorModify/{id}")
    public ModelAndView zhouyiAuthorModify(@PathVariable("id") Integer id) {
        ModelAndView mv = new ModelAndView("zhouyiAuthorModify");
        mv.addObject("zhouyiAuthor",zhouyiAuthorService.getZhouyiContentAuthorById(id) );
        return mv;
    }

    @RequestMapping("/zhouyiAuthorUpdate")
    public ModelAndView zhouyiAuthorUpdate(@Valid ZhouyiAuthor zhouyiAuthor,BindingResult errors) {
        ModelAndView mv = new ModelAndView();
        if(zhouyiAuthor.getOrderId()==null) {
            errors.addError(new FieldError("zhouyiAuthor", "orderId", "不能为空"));
        }
        if(errors.getErrorCount()>0) {
            mv.setViewName("zhouyiAuthorModify");
            return mv;
        }
        zhouyiAuthorService.modifyZhouyiContentAuthor(zhouyiAuthor);
        mv.setViewName("redirect:/getAuthors");
        return mv;

    }

}

2.jsp页面。

有3个,如果能用springmvc标签写的,就用springmvc标签写,不要用html普通标签写,因为有一些附件功能,比如path在修改页面时,若有列表可以自动检查当前值并且选中。

头如下:

<title>Yiwiki - 作者</title>
<% pageContext.setAttribute("APP_PATH", request.getContextPath()); %>
<script  src="${APP_PATH}/static/js/jquery-1.12.4.min.js"></script>
<link href="${APP_PATH}/static/bootstrap-3.3.7-dist/css/bootstrap-theme.css" rel="stylesheet">
<link href="${APP_PATH}/static/bootstrap-3.3.7-dist/css/bootstrap.css" rel="stylesheet">
<script  src="${APP_PATH}/static/bootstrap-3.3.7-dist/js/bootstrap.js" ></script>

</head>
<body>

头文件包括如下:

<body>
<jsp:include page="/header.jsp"></jsp:include>
    <ol class="breadcrumb">
        <li><a href="#">Home</a></li>
        <li><a href="#">作者分类</a></li>
        <li class="active">修改</li>
    </ol>
//下面为主体部分
<div class="container">

浏览页面如下:

<div class="container">
        <span style="margin-left:3px;color:#ce4844;font-weight:bold">${errors }</span>

        <a href="${APP_PATH }/zhouyiAuthorAdd"><button type="button" class="btn btn-primary "
            style="margin-bottom: 8px; float: right">新增</button></a>
        <table class="table table-striped table-hover">
            <tr>
                <td>ID</td>
                <td>排序</td>
                <td>作者名称</td>
                <td>说明</td>
                <td>操作</td>
            </tr>

            <c:forEach items="${pageinfo.list }" var="zhouyiAuthor">
                <tr>
                    <td>${zhouyiAuthor.id }</td>
                    <td>${zhouyiAuthor.orderId }</td>

                    <td>${zhouyiAuthor.name }</td>
                    <td>${zhouyiAuthor.info }</td>
                    <td><a href="${APP_PATH }/zhouyiAuthorModify/${zhouyiAuthor.id}"><button type="button" class="btn btn-primary btn-xs btn_edit" edit_id="${zhouyiAuthor.id }">修改</button></a>
                        <a href="${APP_PATH }/zhouyiAuthorDel/${zhouyiAuthor.id}"><button type="button" class="btn btn-primary btn-xs" onclick="return confirm(‘确定要删除吗?‘)">删除</button></a></td>
                </tr>
            </c:forEach>
        </table>
        共${pageinfo.total }条记录,共${pageinfo.pages }页
        <nav style="float: right" aria-label="Page navigation">
            <ul class="pagination">
                <li><a
                    href="${APP_PATH }/getAuthors?pn=1"
                    aria-label="Previous"> <span aria-hidden="true">&laquo;</span>
                </a></li>

                <c:forEach items="${pageinfo.navigatepageNums }" var="nums">
                    <c:if test="${pageinfo.pageNum == nums }">
                        <li class="active"><a
                            href="${APP_PATH }/getAuthors?pn=${nums}">${nums }</a></li>
                    </c:if>
                    <c:if test="${pageinfo.pageNum != nums }">
                        <li><a
                            href="${APP_PATH }/getAuthors?pn=${nums}">${nums }</a></li>
                    </c:if>
                </c:forEach>

                <li><a
                    href="${APP_PATH }/getAuthors?pn=${pageinfo.pages}"
                    aria-label="Next"> <span aria-hidden="true">&raquo;</span>
                </a></li>
            </ul>
        </nav>

    </div>

增加跳转页面如下:

<div class="container">
<form:form  modelAttribute="zhouyiAuthor" class="form-horizontal" id="saveForm"  >

  <div class="form-group">

    <label for="name" class="col-sm-2 control-label">作者</label>
    <div class="col-sm-6">
     <form:input type="text" path="name" class="form-control" id="name" placeholder="姓名" /><form:errors path="name"></form:errors>
    </div>
  </div>

<div class="form-group">
    <label for="info" class="col-sm-2 control-label">说明</label>
    <div class="col-sm-6">
      <form:input type="text"  path="info" class="form-control" id="info" placeholder="备注"/><form:errors path="info"></form:errors>
    </div>
  </div>

    <div class="form-group">
    <label for="" class="col-sm-2 control-label"></label>
    <div class="col-sm-6" >
      <button type="submit" id="saveIndex" class="btn btn-primary" formenctype="multipart/form-data"   formaction="${APP_PATH }/zhouyiAuthorSave" formmethod="post"  >保存</button>
    </div>
  </div>

   </form:form>

    </div>

修改页面如下:

<div class="container">
<form:form  modelAttribute="zhouyiAuthor" class="form-horizontal" id="saveForm"  >

  <div class="form-group">
 <form:hidden path="id"/>
    <label for="name" class="col-sm-2 control-label">作者</label>
    <div class="col-sm-6">
     <form:input type="text" path="name" class="form-control" id="name" placeholder="姓名" /><form:errors path="name"></form:errors>
    </div>
  </div>

<div class="form-group">
    <label for="info" class="col-sm-2 control-label">说明</label>
    <div class="col-sm-6">
      <form:input type="text"  path="info" class="form-control" id="info" placeholder="备注"/><form:errors path="info"></form:errors>
    </div>
  </div>
   <div class="form-group">
    <label for="orderId" class="col-sm-2 control-label">排序</label>
    <div class="col-sm-2">
      <form:input type="text"  path="orderId" class="form-control" id="orderId" placeholder="排序"/><form:errors path="orderId"></form:errors>
    </div>
  </div>
    <div class="form-group">
    <label for="" class="col-sm-2 control-label"></label>
    <div class="col-sm-6" >
      <button type="submit" id="saveIndex" class="btn btn-primary" formenctype="multipart/form-data"   formaction="${APP_PATH }/zhouyiAuthorUpdate" formmethod="post"  >保存</button>
    </div>
  </div>
  </form:form>
    </div>

原文地址:https://www.cnblogs.com/sdgtxuyong/p/12194880.html

时间: 2024-10-05 15:16:32

springmvc CRUD控制器写法和jsp页面写法 总结大全。的相关文章

读取本地图片写到jsp页面

//读取本地图片写到jsp页面 File file = new File("D:/parking/A区12号.jpg"); ServletOutputStream out = null; InputStream in = null; try { in = new FileInputStream(file); response().setContentType("multipart/form-data"); int tempbyte; out = response()

SpringMVC 无法访问到指定jsp页面可能的原因

出现上图这种页面,controller肯定是找到了,只是试图解析器viewresolver 解析试图失败,原因两种 1.资源hello.jsp文件确实没有放在WEB-INF目录 2.资源文件放在WEB-INF目录下,但是试图解析器配置属性里用的是相对地址,而Controller类上加了@RequestMapping映射地址,类中所有的方法要以该地址作为父路径. <property name="prefix" value="WEB-INF/" />  &l

 jsp页面如何结合EL标签或JSTL标签,进行判断的?

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的.JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x.在JSP 2.0中也是作为标准支持的. 这主要是为了替换以前Java代码写在Jsp页面上的写法.例如: 以前写法如下: 1 2 3 4 <%              String amind="Admin";       

JSP页面中&lt;%!%&gt;与&lt;%%&gt;与&lt;%=%&gt;

首先,我们要了解jsp运行原理.JSP的本质就是一个Servlet,JSP的运行之前会先被Tomcat服务器翻译为.java文件,然后在将.java文本编译 为.class文件,而我们在访问jsp时,处理请求的就是那个翻译后的类. 1.<% %>叫做脚本片段,其中写的内容会翻译在Servlet的Service方法中,显然我们可以在Service方法中定义局部变量或者调用其他方法,但是不能 在Service中再定义其他的方法,也就是我们可以在<%%>中定义局部变量或者调用方法,但不能

jsp页面执行原理及获取上下文根方式

一.在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个Servlet.而这个引擎本身也是一个Servlet.jsp实质是属于后台.它的执行过程如下: (1)JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现JSP文件有任何语法错误,转换过程将中断,并向服务端和客户端输出错误信息. (2)如果转换成功,JSP引擎用javac把该Java源文件编译成相应的class文件. (3)创建一个该Servlet(JSP页面的转换结果)的实例,该Servlet的jspIni

SpringMVC中@Control控制器返回的是Jsp页面还是控制器请求的总结

1.返回到JSP页面: return "main" --跳转到 WEB-INF/main.jsp 页面. return "redirect:/main.jsp" --重定向到main.jsp页面,redirect无法访问WEB-INF下的资源文件,因此必须加上.jsp后缀. 2.转发控制器请求: return "forward:/main" --转到 为main的请求上. return "redirect:/main" --重

IDEA在jsp页面写Java代码报错

如题,我以前用myeclipse,eclipse的时候,在jsp里写Java代码都是可以的,现在我换成了IDEA,却莫名报错 而且没有代码提示,比如说下图这样的,,虽然运行还是能运行...但对强迫症而言,实在不能忍 之前一直以为是idea对这种写法不太支持(毕竟都mvc思想了,在jsp里写java是有点那啥...),直到今天用idea写servlet类也报错..才去找了找,发现原来是可以配置的,tomcat的架包依赖没有导入 然后就ok了 不行的话 重启一下idea就可以 现在你可以用idea在

SpringMVC 返回JSON和JSP页面xml配置

SpringMVC 返回JSON和JSP页面xml配置 代码1: <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> <!-- Enables the Spring MVC @Controller programming model --> <annotation-driven /> <!-- Handles HTTP GET re

SpringMVC框架下实现JSON(类方法中回传数据到jsp页面,使用jQuery方法回传)

JSON的实现,即将需要的数据回传到jsp页面: 1>.加入实现Json的三个架包到lib中:2>.目标方法上边加入注解,需要返回的值3>.在jsp页面中书写jQuery方法: eclipse中javaEE环境下的web.xml文件配置为: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema