JSP
- 概念:Java Server Pages,Java服务端页面
- 一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容,还可以定义Jva代码的动态内容
- JSP = HTML+ Java
- JSP的作用:简化开发,避免了在Servlet中直接输出HTML标签
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>JSP,Hello World</h1>
<%
System.out.println("hello,jsp~);
%>
</body>
</html>
JSP快速入门
- 导入JSP坐标
<dependency>
<groupld>javax.servlet.jsp</groupld>
<artifactld>jsp-api</artifactld>
<version>2.2</version>
<scope>provided</scope>
</dependency>
- 创建JSP文件
- 编写HTML标签和Java代码
-
示例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>hello world jsp</h1> <% System.out.println("hello world jsp"); %> </body> </html>
注意:该代码使用java8,若使用java17会报错500
JSP原理
- 概念:Java Server Pages,Java服务端页面
- JSP = HTML+ Java,用于简化开发的
- JSP本质上就是一个Servlet
- JSP在被访问时,由JSP容器(Tomcat)将其转换为Java文件(Servlet),在由JSP容器(Tomcat)将其编译,最终对外提供服务的其实就是这个字节码文件
JSP脚本
- JSP脚本用于在JSP页面内定义Java代码
- JSP脚本分类:
- <%…%>:内容会直接放到_jspService()方法之中_
- <%=…%>∶内容会放到out.print()中,作为out.print()的参数
- <%!..%>︰内容会放到_jspService()方法之外,被类直接包含
- JSP缺点
由于JSP页面内,既可以定义 HTML标签,又可以定义Java代码,造成了以下问题:
-
书写麻烦:特别是复杂的页面
-
阅读麻烦
-
复杂度高:运行需要依赖于各种环境,JRE,JSP容器,JavaEE…
-
占内存和磁盘:JSP会自动生成.java和.class文件占磁盘,运行的是.class文件占内存
-
调试困难:出错后,需要找到自动生成的.java文件进行调试
-
不利于团队协作:前端人员不会Java,后端人员不精HTML
-
…
JSP已逐渐退出历史舞台:HTML+AJAX
EL表达式
-
Expression Language表达式语言,用于简化JSP页面内的Java代码
-
主要功能:获取数据
-
语法: ${expression}
<%@ page isELIgnored="false"%> ${brands}
获取域中存储的key为brands的数据
-
JavaWeb中的四大域对象:
- page:当前页面有效
- request:当前请求有效
- session:当前会话有效
- application:当前应用有效
el表达式获取数据,会依次从这4个域中寻找,直到找到为止
JSTL标签
- JSP标准标签库(Jsp Standarded Tag Library),使用标签取代JSP页面上的Java代码
<c:if test="${flag == 1}">
男
</c:if>
<c:if test="${flag == 2}">
女
</c:if>
*了解即可
JSTL快速入门
1.导入坐标
<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>
2.在JSP页面上引入JSTL标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3.使用
<c:if>
<c:if>
标签
<c:if test="${status ==1}">
启用
</c:if>
<c:if test="${status ==0}">
禁用
</c:if>
<c:forEach>
:相当于for循环items
:被遍历的容器var
:遍历产生的临时变量varStatus
:遍历状态对象(index
从0开始count
从1开始)
<c:forEach items="${brands}" var="brand" varStatus="status">
<tr align="center">
<td>${status.count}</td>
<td>${brand.brandName}</td>
<td>${brand.companyName}</td>
<td>${brand.description}</td>
</tr>
</c:forEach>
相当于java中的增强for循环(迭代器遍历)
-
begin:开始数
-
end:结束数
-
step:步长
<c:forEach begin="0" end="10" step="1" var="i"> ${i} </c:forEach>
相当于java中的
for (int i = O; i <=10; i++) { System.out.println(i); }
MVC模式和三层架构
MVC模式
- MVC是一种分层开发的模式,其中:
- M: Model,业务模型,处理业务
- v: View,视图,界面展示
- c: Controller,控制器,处理请求,调用模型和视图
- MVC好处
- 职责单一,互不影响
- 有利于分工协作
- 有利于组件重用
三层架构
-
数据访问层:对数据库的CRUD基本操作
-
业务逻辑层:对业务逻辑进行封装,组合数据访问层层中基本功能,形成复杂的业务逻辑
-
功能表现层:接收请求,封装数据,调用业务逻辑层,响应数据
MVC模式和三层架构
案例
完成品牌数据的增删改查,使用三层架构的思想分层开发
准备环境
-
创建新的模块brand_demo,引入坐标
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>brand_demo</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> <dependencies> <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> </dependency> <!--servlet--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!--jsp--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <!--jstl--> <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> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> </plugin> <!-- Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- 端口号 --> <port>8080</port> </configuration> </plugin> </plugins> </build> </project>
-
创建三层架构的包结构
-
数据库表tb_brand
-
实体类Brand
//Brand对象 package com.jihua.pojo; public class Brand { //id 主键 private Integer id; //品牌名称 private String brandName; //企业名称 private String companyName; //排序字段 private Integer ordered; //描述信息 private String description; //状态 0:禁用 1:启用 private Integer status; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getBrandName() { return brandName; } public void setBrandName(String brandName) { this.brandName = brandName; } public String getCompanyName() { return companyName; } public void setCompanyName(String companyName) { this.companyName = companyName; } public Integer getOrdered() { return ordered; } public void setOrdered(Integer ordered) { this.ordered = ordered; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public Brand() { } public Brand(Integer id, String brandName, String companyName, String description) { this.id = id; this.brandName = brandName; this.companyName = companyName; this.description = description; } public Brand(Integer id, String brandName, String companyName, Integer ordered, String description, Integer status) { this.id = id; this.brandName = brandName; this.companyName = companyName; this.ordered = ordered; this.description = description; this.status = status; } @Override public String toString() { return "Brand{" + "id=" + id + ", brandName='" + brandName + '\'' + ", companyName='" + companyName + '\'' + ", ordered=" + ordered + ", description='" + description + '\'' + ", status=" + status + '}'; } }
-
MyBatis基础环境
-
Mybatis-config. xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--起别名--> <typeAliases> <package name="com.jihua.pojo"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!--数据库连接信息--> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///brand_demo?useSSL=false&useServerPrepStmts=true"/> <property name="username" value="root"/> <property name="password" value="设置为你的密码"/> </dataSource> </environment> </environments> <mappers> <!--扫描mapper--> <package name="com.jihua.mapper"/> </mappers> </configuration>
-
BrandMapper. xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.jihua.mapper.BrandMapper"> <resultMap id="brandResultMap" type="brand"> <result column="brand_name" property="brandName"></result> <result column="company_name" property="companyName"></result> </resultMap> </mapper>
-
BrandMapper接口
//BrandMapper.class接口 package com.jihua.mapper; import com.jihua.pojo.Brand; import org.apache.ibatis.annotations.*; import java.util.List; public interface BrandMapper { /** * 查询所有 * @return */ @Select("select * from tb_brand") @ResultMap("brandResultMap") List<Brand> selectAll(); @Insert("insert into tb_brand values(null,#{brandName},#{companyName},#{ordered},#{description},#{status})") void add(Brand brand); /** * 根据id查询 * @param id * @return */ @Select("select * from tb_brand where id = #{id}") @ResultMap("brandResultMap") Brand selectById(int id); /** * 修改 * @param brand */ @Update("update tb_brand set brand_name=#{brandName},company_name=#{companyName},ordered=#{ordered},description=#{description},status=#{status} where id =#{id}") void update(Brand brand); /** * 删除 * @param id */ @Delete("delete from tb_brand where id = ${id}") void deleteById(int id); }
-
查询所有
添加
注意处理POST请求中文乱码问题
修改
修改-回显数据
修改页面应该先回显原始数据
修改-修改数据
删除
代码如下:
//BrandService.class对象
package com.jihua.service;
import com.jihua.mapper.BrandMapper;
import com.jihua.pojo.Brand;
import com.jihua.util.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import java.util.List;
public class BrandService {
SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();
/**
* 查询所有
*
* @return
*/
public List<Brand> selectAll() {
//调用BrandMapper.selectAll()
//2. 获取sqlSession
SqlSession sqlSession = factory.openSession();
//3. 获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
//4. 调用方法
List<Brand> brands = mapper.selectAll();
//释放资源
sqlSession.close();
return brands;
}
/**
* 添加
*
* @param brand
*/
public void add(Brand brand) {
//2. 获取sqlSession
SqlSession sqlSession = factory.openSession();
//3. 获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
//4. 调用方法
mapper.add(brand);
//提交事务
sqlSession.commit();
//释放资源
sqlSession.close();
}
/**
* 根据id查询
*
* @return
*/
public Brand selectByID(int id) {
//2. 获取sqlSession
SqlSession sqlSession = factory.openSession();
//3. 获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
//4. 调用方法
Brand brand = mapper.selectById(id);
//释放资源
sqlSession.close();
return brand;
}
/**
* 修改
*
* @param brand
*/
public void update(Brand brand) {
//2. 获取sqlSession
SqlSession sqlSession = factory.openSession();
//3. 获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
//4. 调用方法
mapper.update(brand);
//提交事务
sqlSession.commit();
//释放资源
sqlSession.close();
}
/**
* 删除
* @param id
*/
public void deleteById(int id) {
//2. 获取sqlSession
SqlSession sqlSession = factory.openSession();
//3. 获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
//4. 调用方法
mapper.deleteById(id);
//提交事务
sqlSession.commit();
//释放资源
sqlSession.close();
}
}
//SqlSessionFactoryUtils.class自定义工具类
package com.jihua.util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class SqlSessionFactoryUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
//静态代码块会随着类的加截而自动执行,且只执行一次
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}
//AddServlet.class对象
package com.jihua.web;
import com.jihua.pojo.Brand;
import com.jihua.service.BrandService;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/addServlet")
public class AddServlet extends HttpServlet {
private BrandService service = new BrandService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理POST请求乱码问题
request.setCharacterEncoding("UTF-8");
//1.接收表单提交的数据,封装为一个Brand对象
String brandName = request.getParameter("brandName");
String companyName = request.getParameter("companyName");
String ordered = request.getParameter("ordered");
String description = request.getParameter("description");
String status = request.getParameter("status");
//封装为一个Brand对象
Brand brand = new Brand();
brand.setBrandName(brandName);
brand.setCompanyName(companyName);
brand.setOrdered(Integer.parseInt(ordered));
brand.setDescription(description);
brand.setStatus(Integer.parseInt(status));
//2. 调用service 完成添加
service.add(brand);
//3. 转发到查询所有Servlet
request.getRequestDispatcher("/selectAllServlet").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
//DeleteByIdServlet.class对象
package com.jihua.web;
import com.jihua.pojo.Brand;
import com.jihua.service.BrandService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/deleteByIdServlet")
public class DeleteByIdServlet extends HttpServlet {
private BrandService service = new BrandService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理POST请求乱码问题
request.setCharacterEncoding("UTF-8");
//1.接收id
String id = request.getParameter("id");
//2. 调用service 完成删除
service.deleteById(Integer.parseInt(id));
//3. 转发到查询所有Servlet
request.getRequestDispatcher("/selectAllServlet").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
//SelectAllServlet.class类
package com.jihua.web;
import com.jihua.pojo.Brand;
import com.jihua.service.BrandService;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;
@WebServlet("/selectAllServlet")
public class SelectAllServlet extends HttpServlet {
private BrandService service = new BrandService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 调用BrandService完成查询
List<Brand> brands = service.selectAll();
//2. 存入request域中
request.setAttribute("brands", brands);
//3. 转发到brand.jsp
request.getRequestDispatcher("/brand.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
//SelectByIdServlet.class类
package com.jihua.web;
import com.jihua.pojo.Brand;
import com.jihua.service.BrandService;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;
@WebServlet("/selectByIdServlet")
public class SelectByIdServlet extends HttpServlet {
private BrandService service = new BrandService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 接收id
String id = request.getParameter("id");
//2. 调用service
Brand brand = service.selectByID(Integer.parseInt(id));
//3. 存储到request域中
request.setAttribute("brand",brand);
//4. 转发到update.jsp
request.getRequestDispatcher("/update.jsp").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
}
}
//UpdateServlet.class类
package com.jihua.web;
import com.jihua.pojo.Brand;
import com.jihua.service.BrandService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/updateServlet")
public class UpdateServlet extends HttpServlet {
private BrandService service = new BrandService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理POST请求乱码问题
request.setCharacterEncoding("UTF-8");
//1.接收表单提交的数据,封装为一个Brand对象
String id = request.getParameter("id");
String brandName = request.getParameter("brandName");
String companyName = request.getParameter("companyName");
String ordered = request.getParameter("ordered");
String description = request.getParameter("description");
String status = request.getParameter("status");
//封装为一个Brand对象
Brand brand = new Brand();
brand.setId(Integer.parseInt(id));
brand.setBrandName(brandName);
brand.setCompanyName(companyName);
brand.setOrdered(Integer.parseInt(ordered));
brand.setDescription(description);
brand.setStatus(Integer.parseInt(status));
//2. 调用service 完成修改
service.update(brand);
//3. 转发到查询所有Servlet
request.getRequestDispatcher("/selectAllServlet").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
//addBrand.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>添加品牌</title>
</head>
<body>
<h3>添加品牌</h3>
<form action="/brand_demo/addServlet" method="post" οnsubmit="return check()">
品牌名称︰<input name="brandName" id="brandName"><br>
企业名称:<input name="companyName" id="companyName"><br>
排序︰<input name="ordered" id="ordered"><br>
描述信息︰<textarea rows="5" cols="20" name="description" id="description"></textarea><br>
状态∶
<input type="radio" name="status" value="0" id="status_0">禁用
<input type="radio" name="status" value="1" id="status_1">启用<br>
<input type="submit" value="提交">
</form>
<script>
<%-- 判断表单是否全部不为空 --%>
function check() {
var brandName = document.getElementById("brandName").value;
var companyName = document.getElementById("companyName").value;
var ordered = document.getElementById("ordered").value;
var description = document.getElementById("description").value;
var status_0 = document.getElementById("status_0");
var status_1 = document.getElementById("status_1");
if (!brandName) {
alert("品牌名称不能为空");
return false;
}
if (!companyName) {
alert("企业名称不能为空");
return false;
}
if (!ordered) {
alert("排序不能为空");
return false;
}
if (!description) {
alert("描述信息不能为空");
return false;
}
if (!status_0.checked && !status_1.checked) {
alert("状态不能为空");
return false;
}
}
</script>
</body>
</html>
//brand.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<input type="button" value="新增" id="add"><br>
<table border="1" cellspacing="0" width="80%">
<tr>
<th>序号</th>
<th>品牌名称</th>
<th>企业名称</th>
<th>排序</th>
<th>品牌介绍</th>
<th>状态</th>
<th>操作</th>
</tr>
<c:forEach items="${brands}" var="brand" varStatus="status">
<tr align="center">
<td>${status.count}</td>
<td>${brand.brandName}</td>
<td>${brand.companyName}</td>
<td>${brand.ordered}</td>
<td>${brand.description}</td>
<c:if test="${brand.status == 1}">
<td>启用</td>
</c:if>
<c:if test="${brand.status != 1}">
<td>禁用</td>
</c:if>
<td>
<a href="/brand_demo/selectByIdServlet?id=${brand.id}">修改</a>
<a href="/brand_demo/deleteByIdServlet?id=${brand.id}">删除</a>
</td>
</tr>
</c:forEach>
</table>
<script>
document.getElementById("add").onclick = function () {
location.href = "/brand_demo/addBrand.jsp";
}
</script>
</body>
</html>
//index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/brand_demo/selectAllServlet">查询所有</a>
</body>
</html>
//update.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>修改品牌</title>
</head>
<body>
<h3>修改品牌</h3>
<form action="/brand_demo/updateServlet" method="post" οnsubmit="return check()">
<%--隐藏域,提交id--%>
<input type="hidden" name="id" value="${brand.id}">
品牌名称︰<input name="brandName" value="${brand.brandName}" id="brandName"><br>
企业名称:<input name="companyName" value="${brand.companyName}" id="companyName"><br>
排序︰<input name="ordered" value="${brand.ordered}" id="ordered"><br>
描述信息︰<textarea rows="5" cols="20" name="description" id="description">${brand.description}</textarea><br>
状态∶
<c:if test="${brand.status==1}">
<input type="radio" name="status" value="0" id="status_0">禁用
<input type="radio" name="status" value="1" id="status_1" checked>启用<br>
</c:if>
<c:if test="${brand.status==0}">
<input type="radio" name="status" value="0" id="status_0" checked>禁用
<input type="radio" name="status" value="1" id="status_1">启用<br>
</c:if>
<input type="submit" value="提交">
</form>
<script>
<%-- 判断表单是否全部不为空 --%>
function check() {
var brandName = document.getElementById("brandName").value;
var companyName = document.getElementById("companyName").value;
var ordered = document.getElementById("ordered").value;
var description = document.getElementById("description").value;
var status_0 = document.getElementById("status_0");
var status_1 = document.getElementById("status_1");
if (!brandName) {
alert("品牌名称不能为空");
return false;
}
if (!companyName) {
alert("企业名称不能为空");
return false;
}
if (!ordered) {
alert("排序不能为空");
return false;
}
if (!description) {
alert("描述信息不能为空");
return false;
}
if (!status_0.checked && !status_1.checked) {
alert("状态不能为空");
return false;
}
}
</script>
</body>
</html>