最终环境配置:

IDEA2021+JDK8+mysql connector java5+Mysql5+mybatis3.5:从数据库取出数据。

+(servlet+jsp+el表达式jstl):servlet+jsp接收HTTP请求和响应将取出的数据形成页面代码并传递到浏览器,el可以避免书写<%%>加快书写,jstl提供的c:if c:foreach进一步加快书写。

tomcat7插件+html5+css3+chorme:

=========================================================================

在文章“Javaweb8==实现前后端分离的登录注册功能。前端html+ajax”中,可以看到,页面的内容只有少部分必要的数据传递到后端进行处理,后端处理完后,也只是给前端返回一个简单的字符串就可以了。这种前后端分离的模式,能降低后端的代码量。而且前端页面放在前端服务器上,可以分成两拨人来写。

但有时候要求后端人员将页面一起写了,为了减少参数的传递,可以参用这种方式:即登录界面由后端传往浏览器,收到账户名密码验证之后再传一个完整的界面去浏览器。

如上,需要后端响应的时候,直接响应一个页面的数据给前端,包括页面的所有标签和内容,比如返回一个a.html,之前通过协议+IP+端口+a.html就是这个原理。但是这样返回去只是静态的a.html。那如果我想要返回一个页面给前端,这个页面不止包含静态的,还要包含动态获取到的数据,比如a.html这个页面已经写完了,返回的时候后端要在页面上额外加上一个字符串,这个字符串是从数据库中查出来的。

有两种实现方法:一是直接在HttpServlet子类中write整个页面的数据,包含<html>和<p>这种标签,以及write从数据库中查出来的内容,如下:

第二种方式是使用jsp技术简化方式一。用jsp技术需要将页面的后缀写成.jsp,同时需要一个依赖包,tomcat中也内置了这个依赖包,tomcat依靠这个依赖包会将后缀为.jsp的文件编译成一个Servlet,底层还是按方式一的方式实现。

访问http://localhost:8090/jsp/hello.jsp等同于方位一个叫做hello的servlet。web服务器tomcat收到上述路径的请求后,会直接去执行hello_jsp这个继承了HttpServlet的类。所以,编写一个a.jsp页面就等同于编写了一个webservlet("/a")标注的HttpServlet子类。

============================================================

纯JSP示例=========================================================

hello.jsp

<html>
<body>
<h2>Hello World!</h2>
<%--放入_jspService()中作为局部变量或者直接执行--%>
<%System.out.println("nihao");int i = 10;
%><%--放入_jspService()中的 out.write();中直接写入输出流中--%>
<%="1234567890"%><%--放入hello_jsp类中,作为成员变量--%>
<%!int b = 100;%><%=(b + 30)%>
</body>
</html>

pom.xml

<?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>10jspdemo1</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>10jspdemo1 Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope></dependency></dependencies><build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8090</port><!--访问端口号 --><!--项目访问路径未配置访问路径: http://localhost:8080/demoweb/a.html配置/后访问路径: http://localhost:80/a.html如果配置成 /hello,访问路径会变成什么?答案: http://localhost:80/hello/a.html--><path>/jsp</path></configuration></plugin></plugins></build>
</project>

=========================================================

============================================================

servlet+JSP+EL表达式示例 ${brands} =========================================================

<?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>10jspdemo1</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>10jspdemo1 Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope></dependency></dependencies><build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8090</port><!--访问端口号 --><!--项目访问路径未配置访问路径: http://localhost:8080/demoweb/a.html配置/后访问路径: http://localhost:80/a.html如果配置成 /hello,访问路径会变成什么?答案: http://localhost:80/hello/a.html--><path>/jsp</path></configuration></plugin></plugins></build>
</project>
package com.ldj.contrller;import com.ldj.pojo.TbBrand;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;@WebServlet("/TestServletJsp")
public class TestServletJsp extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 查询数据库List<TbBrand> brands = new ArrayList<TbBrand>();brands.add(new TbBrand(1, "三只松鼠", "三只松鼠", 100, "三只松鼠,好吃不上火", 1));brands.add(new TbBrand(2, "优衣库", "优衣库", 200, "优衣库,服适人生", 0));brands.add(new TbBrand(3, "小米", "小米科技有限公司", 1000, "为发烧而生", 1));System.out.println(brands);//设置域对象request.setAttribute("brands", brands);//请求转发request.getRequestDispatcher("/TestServletJspShow.jsp").forward(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head><title>Title</title>
</head>
<body>
<p>"设置某个jsp页面使用el表达式,需要在jsp页面加上(控制单个页面)<@ page isELIgnored="false">"</p>
<%--检查了代码无误后,估计是EL本身的问题。在网上找到了解决办法,在dynaactionform.jsp文件中头部加上:<%@ page isELIgnored="false"%>。正确显示结果。故提出来备忘。之前大量的符合jsp1.2标准的项目中用到了${***},比如${1+2},但本意就是想显示${1+2},而不是3,所以应该有控制是否解析el表达式的选项,我觉得分为三个级别:
1、设置整个应用服务器下的所有项目是否解析el表达式(控制所有项目)
2、设置整个项目使用el表达式,需要在web.xml中加上 (控制一个项目)
<jsp-config>
<jsp-property-group>
<el-ignored>false</el-ignored>
</jsp-property-group>
</jsp-config>
3、设置某个jsp页面使用el表达式,需要在jsp页面加上(控制单个页面)
<%@ page isELIgnored="false"%>--%>
<p>测试servlet+jsp,用EL表达式减少在jsp页面中写代码,并增加可读性</p>
${brands}
</body>
</html>

============================================================

servlet+JSP+EL表达式(简化jsp页面java参数获取)+JSTL(简化jsp页面java语句书写)标签完整实现题目所提的要求:示例如下=========================================================

JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)_http://lioil.win-CSDN博客EL表达式和JSTL标签库: 在JSP页面代替java代码,便于编写一.EL表达式作用: ${} 简化脚本表达式 j2ee1.4以前版本需指定j2ee1.4以后版本默认支持EL表达式1.EL内置对象EL内置11个对象,不需定义可直接使用 pageScope 获取page域属性组成的MaprequestScope 获取reqeust域属性组成的https://blog.csdn.net/qq_32115439/article/details/54685786

======================================================================

项目结构:

建表SQL,数据库名db1,密码1234

/*
Navicat MySQL Data TransferSource Server         : ldj
Source Server Version : 50724
Source Host           : localhost:3306
Source Database       : db1Target Server Type    : MYSQL
Target Server Version : 50724
File Encoding         : 65001Date: 2021-10-28 09:51:59
*/SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for tb_brand
-- ----------------------------
DROP TABLE IF EXISTS `tb_brand`;
CREATE TABLE `tb_brand` (`id` int(11) NOT NULL AUTO_INCREMENT,`brand_name` varchar(20) DEFAULT NULL,`company_name` varchar(20) DEFAULT NULL,`ordered` int(11) DEFAULT NULL,`description` varchar(100) DEFAULT NULL,`status` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of tb_brand
-- ----------------------------
INSERT INTO `tb_brand` VALUES ('4', '凡人修仙传0', '公司0', '222', '描述0', '1');
INSERT INTO `tb_brand` VALUES ('5', '凡人修仙传1', '公司1', '222', '描述1', '1');
INSERT INTO `tb_brand` VALUES ('6', '凡人修仙传2', '公司2', '222', '描述2', '1');
INSERT INTO `tb_brand` VALUES ('7', '凡人修仙传3', '公司3', '222', '描述3', '1');
INSERT INTO `tb_brand` VALUES ('8', '凡人修仙传4', '公司4', '222', '描述4', '1');
INSERT INTO `tb_brand` VALUES ('9', '凡人修仙传5', '公司5', '222', '描述5', '1');
INSERT INTO `tb_brand` VALUES ('10', '凡人修仙传6', '公司6', '222', '描述6', '1');
INSERT INTO `tb_brand` VALUES ('11', '凡人修仙传7', '公司7', '222', '描述7', '1');
INSERT INTO `tb_brand` VALUES ('12', '凡人修仙传8', '公司8', '222', '描述8', '1');
INSERT INTO `tb_brand` VALUES ('13', '凡人修仙传9', '公司9', '222', '描述9', '1');
INSERT INTO `tb_brand` VALUES ('17', '6666北京', '9999被禁', '999', '9999999999成都', '1');

pom.xml

<?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>10jspdemo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>10jspdemo Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><!--    数据库连接依赖包--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.34</version></dependency><!--    处理请求和响应的依赖包--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope></dependency>
<!--简化.jsp文件书写的依赖包, 如果不使用JSTL1.0标签,可以忽略taglibs包--><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>
<!--    测试依赖包--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>provided</scope></dependency></dependencies><build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8090</port><!--访问端口号 --><!--项目访问路径未配置访问路径: http://localhost:8080/demoweb/a.html配置/后访问路径: http://localhost:80/a.html如果配置成 /hello,访问路径会变成什么?答案: http://localhost:80/hello/a.html--><path>/jsp</path></configuration></plugin></plugins></build>
</project>
实体类TbBrand
package com.ldj.pojo;public class TbBrand {private Integer id;private String brandName;private String companyName;private Integer ordered;private String description;private Integer status;@Overridepublic String toString() {return "TbBrand{" +"id=" + id +", brandName='" + brandName + '\'' +", companyName='" + companyName + '\'' +", ordered=" + ordered +", description='" + description + '\'' +", status=" + status +'}';}public TbBrand() {}public TbBrand(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;}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;}
}
TbBrandMapper
package com.ldj.mapper;import com.ldj.pojo.TbBrand;import java.util.List;public interface TbBrandMapper {List<TbBrand> selectTbBrandsAll();int deleteByPrimaryKey(Integer id);int insert(TbBrand record);int insertSelective(TbBrand record);TbBrand selectByPrimaryKey(Integer id);int updateByPrimaryKeySelective(TbBrand record);int updateByPrimaryKey(TbBrand record);}

TbBrandMapper.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.ldj.mapper.TbBrandMapper"><resultMap id="BaseResultMap" type="com.ldj.pojo.TbBrand"><!--@Table tb_brand--><id column="id" jdbcType="INTEGER" property="id"/><result column="brand_name" jdbcType="VARCHAR" property="brandName"/><result column="company_name" jdbcType="VARCHAR" property="companyName"/><result column="ordered" jdbcType="INTEGER" property="ordered"/><result column="description" jdbcType="VARCHAR" property="description"/><result column="status" jdbcType="INTEGER" property="status"/></resultMap><sql id="Base_Column_List">id,brand_name,company_name,ordered,description,`status`</sql><!--查询所有用户--><select id="selectTbBrandsAll" resultMap="BaseResultMap">select<include refid="Base_Column_List"/>from tb_brand;</select><select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">select<include refid="Base_Column_List"/>from tb_brandwhere id = #{id,jdbcType=INTEGER}</select><delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">deletefrom tb_brandwhere id = #{id,jdbcType=INTEGER}</delete><insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.ldj.pojo.TbBrand" useGeneratedKeys="true">insert into tb_brand (brand_name, company_name, ordered,description, `status`)values (#{brandName,jdbcType=VARCHAR}, #{companyName,jdbcType=VARCHAR}, #{ordered,jdbcType=INTEGER},#{description,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER})</insert><insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.ldj.pojo.TbBrand"useGeneratedKeys="true">insert into tb_brand<trim prefix="(" suffix=")" suffixOverrides=","><if test="brandName != null">brand_name,</if><if test="companyName != null">company_name,</if><if test="ordered != null">ordered,</if><if test="description != null">description,</if><if test="status != null">`status`,</if></trim><trim prefix="values (" suffix=")" suffixOverrides=","><if test="brandName != null">#{brandName,jdbcType=VARCHAR},</if><if test="companyName != null">#{companyName,jdbcType=VARCHAR},</if><if test="ordered != null">#{ordered,jdbcType=INTEGER},</if><if test="description != null">#{description,jdbcType=VARCHAR},</if><if test="status != null">#{status,jdbcType=INTEGER},</if></trim></insert><update id="updateByPrimaryKeySelective" parameterType="com.ldj.pojo.TbBrand">update tb_brand<set><if test="brandName != null">brand_name = #{brandName,jdbcType=VARCHAR},</if><if test="companyName != null">company_name = #{companyName,jdbcType=VARCHAR},</if><if test="ordered != null">ordered = #{ordered,jdbcType=INTEGER},</if><if test="description != null">description = #{description,jdbcType=VARCHAR},</if><if test="status != null">`status` = #{status,jdbcType=INTEGER},</if></set>where id = #{id,jdbcType=INTEGER}</update><update id="updateByPrimaryKey" parameterType="com.ldj.pojo.TbBrand">update tb_brandset brand_name   = #{brandName,jdbcType=VARCHAR},company_name = #{companyName,jdbcType=VARCHAR},ordered      = #{ordered,jdbcType=INTEGER},description  = #{description,jdbcType=VARCHAR},`status`     = #{status,jdbcType=INTEGER}where id = #{id,jdbcType=INTEGER}</update>
</mapper>

SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--以上是mybatis的config.xml文件的约束-->
<!--mybatis的主配置文件-->
<configuration><!--引入外部properties文件  --><properties resource="db.properties"></properties><!--配置环境,default处的值是自定义的,但是id值必须和default值相同--><environments default="mysql"><environment id="mysql"><!--配置事务的类型--><transactionManager type="JDBC"></transactionManager><!--配置数据源(连接池)--><dataSource type="POOLED"><!--配置连接数据库的4个基本信息--><property name="driver" value="${jdbc.driverClass}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!--指定映射文件的位置,映射配置文件指的是每个dao独立的配置文件,resource指定文件的位置--><mappers>
<!--        <mapper resource="com/ldj/mapper/TbBrandMapper.xml"/>--><package name="com.ldj.mapper"/></mappers>
</configuration>

db.properties

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/db1?characterEncoding=utf-8
jdbc.username=root
jdbc.password=1234
TbBrandService
package com.ldj.service;import com.ldj.mapper.TbBrandMapper;
import com.ldj.pojo.TbBrand;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;
import java.util.List;public class TbBrandService {private TbBrandMapper tbBrandMapper;public TbBrandService() throws IOException {//1.读取配置文件,连接数据库的信息InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");//2.创建SqlSessionFactory工厂,有了工厂可以生产和操作对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();SqlSessionFactory factory = builder.build(in);//3.使用工厂生产SqlSession对象,可以操作数据库!!!注意事务!!!SqlSession session = factory.openSession(true);//4.使用SqlSesssion创建Dao接口的代理对象,使用代理对象(为了不去创建IUserDao的实现类,使用动态代理对象)tbBrandMapper = session.getMapper(TbBrandMapper.class);//5.调用方法}public int deleteByPrimaryKey(Integer id) {return tbBrandMapper.deleteByPrimaryKey(id);}public int insert(TbBrand record) {return tbBrandMapper.insert(record);}public int insertSelective(TbBrand record) {return tbBrandMapper.insertSelective(record);}public TbBrand selectByPrimaryKey(int id) {return tbBrandMapper.selectByPrimaryKey(id);}public List<TbBrand> selectTbBrandsAll() {return tbBrandMapper.selectTbBrandsAll();}public int updateByPrimaryKeySelective(TbBrand record) {return tbBrandMapper.updateByPrimaryKeySelective(record);}public int updateByPrimaryKey(TbBrand record) {return tbBrandMapper.updateByPrimaryKey(record);}}
AddOneBrandServlet
package com.ldj.web;import com.ldj.pojo.TbBrand;
import com.ldj.service.TbBrandService;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;
import java.nio.charset.StandardCharsets;
import java.util.List;@WebServlet("/AddOneBrandServlet")
public class AddOneBrandServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("收到了添加请求");//        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");String brandName = new String(request.getParameter("brandName").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);String companyName = new String(request.getParameter("companyName").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);Integer ordered = Integer.valueOf(new String(request.getParameter("ordered").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));String description = new String(request.getParameter("description").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);Integer status = Integer.valueOf(new String(request.getParameter("status").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));TbBrand tbBrand = new TbBrand();tbBrand.setBrandName(brandName);tbBrand.setCompanyName(companyName);tbBrand.setOrdered(ordered);tbBrand.setDescription(description);tbBrand.setStatus(status);System.out.println("收到的添加信息" + tbBrand);TbBrandService tbBrandService = new TbBrandService();int insert = tbBrandService.insert(tbBrand);System.out.println(insert);request.getRequestDispatcher("/SelectAllServlet").forward(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}
DeleteOneBrandServlet
package com.ldj.web;import com.ldj.service.TbBrandService;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;@WebServlet("/deleteOneBrandServlet")
public class DeleteOneBrandServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("收到条删除请求");String id = request.getParameter("id");System.out.println(id);TbBrandService tbBrandService = new TbBrandService();tbBrandService.deleteByPrimaryKey(Integer.valueOf(id));request.getRequestDispatcher("/SelectAllServlet").forward(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}
SelectAllServlet
package com.ldj.web;import com.ldj.pojo.TbBrand;
import com.ldj.service.TbBrandService;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 {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {TbBrandService tbBrandService = new TbBrandService();List<TbBrand> tbBrands = tbBrandService.selectTbBrandsAll();System.out.println(tbBrands);request.setAttribute("brands", tbBrands);request.getRequestDispatcher("/brand.jsp").forward(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}
SelectOneBrandByIdServlet
package com.ldj.web;import com.ldj.pojo.TbBrand;
import com.ldj.service.TbBrandService;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;@WebServlet("/selectOneBrandByIdServlet")
public class SelectOneBrandByIdServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("收到了查询一条的请求");String id = request.getParameter("id");System.out.println(id);TbBrandService tbBrandService = new TbBrandService();TbBrand tbBrand = tbBrandService.selectByPrimaryKey(Integer.parseInt(id));System.out.println("想要更改的数据:"+tbBrand);request.setAttribute("brand", tbBrand);request.getRequestDispatcher("/update.jsp").forward(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}
UpdateOneBrandServlet
package com.ldj.web;import com.ldj.pojo.TbBrand;
import com.ldj.service.TbBrandService;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;
import java.nio.charset.StandardCharsets;
import java.util.List;@WebServlet("/updateOneBrandServlet")
public class UpdateOneBrandServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("收到了修改请求");Integer id = Integer.valueOf(new String(request.getParameter("id").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));String brandName = new String(request.getParameter("brandName").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);String companyName = new String(request.getParameter("companyName").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);Integer ordered = Integer.valueOf(new String(request.getParameter("ordered").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));String description = new String(request.getParameter("description").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);Integer status = Integer.valueOf(new String(request.getParameter("status").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));System.out.println(brandName);TbBrand tbBrand = new TbBrand(id, brandName, companyName, ordered, description, status);TbBrandService tbBrandService = new TbBrandService();int i = tbBrandService.updateByPrimaryKey(tbBrand);System.out.println(i);request.getRequestDispatcher("/SelectAllServlet").forward(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

addBrand.jsp

<%--Created by IntelliJ IDEA.User: ldjDate: 2021/10/27Time: 18:03To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><meta charset="UTF-8"><title>添加品牌</title>
</head>
<body>
<h3>添加品牌</h3>
<form action="/jsp/AddOneBrandServlet" method="post">品牌名称:<input name="brandName"><br>企业名称:<input name="companyName"><br>排序:<input name="ordered"><br>描述信息:<textarea rows="5" cols="20" name="description"></textarea><br>状态:<input type="radio" name="status" value="0">禁用<input type="radio" name="status" value="1">启用<br><input type="submit" value="提交">
</form>
</body>
</html>

brand.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>更新一条数据</title><style>.table {border: 1px solid #000000;border-collapse: collapse;width: 80%;margin: auto;}.table th {border: 1px solid #000000;border-collapse: collapse;text-align: center;vertical-align: middle !important;}.table td {border: 1px solid #000000;border-collapse: collapse;text-align: center;vertical-align: middle !important;}.input {background-color: red;height: 100px;width: 100px;}</style>
</head><body>
<input class="input" type="button" value="新增" onclick='location.href=("/jsp/addBrand.jsp")'/>
<hr>
<table class="table"><tr><th>序号</th><th>品牌名称</th><th>企业名称</th><th>排序</th><th>品牌介绍</th><th>状态</th><th>操作</th></tr><c:forEach items="${brands}" var="brand"><tr><td>${brand.id}</td><td>${brand.brandName}</td><td>${brand.companyName}</td><td>${brand.ordered}</td><td>${brand.description}</td><td>${brand.status}</td><td><button onclick="window.location.href='/jsp/selectOneBrandByIdServlet?id='+${brand.id}"type="button"name="1" id="1">修改</button><button onclick="window.location.href='/jsp/deleteOneBrandServlet?id='+${brand.id}" type="button"name="2" id="2">删除</button></td></tr></c:forEach>
</table>
</body>
</html>

update.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>更新一条数据</title>
</head>
<body>
${brand}
<h3>更新品牌的品牌原信息如上</h3>
<form action="/jsp/updateOneBrandServlet" method="post"><input type="hidden" name="id" value=${brand.id}>品牌名称:<input name="brandName" value=${brand.brandName}><br>企业名称:<input name="companyName" value=${brand.companyName}><br>排序:<input name="ordered" value=${brand.ordered}><br>描述信息:<textarea rows="5" cols="20" name="description" id="description">${brand.description}</textarea><br>状态:<c:if test="${brand.status == 0}"><input type="radio" name="status" value="0" checked>禁用<input type="radio" name="status" value="1">启用<br></c:if><c:if test="${brand.status == 1}"><input type="radio" name="status" value="0">禁用<input type="radio" name="status" value="1" checked>启用<br></c:if><input type="submit" value="提交">
</form>
<br>
</body>
</html>

UpdateOneBrand.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>修改</title>
</head>
<body>
<P>修改界面</P>
<%--隐藏域,提交id--%>
${brand.id}
<input type="hidden" name="id" value="${brand.id}">
<input name="id" value="${brand.id}">想要修改的ID
<form action="/jsp/AddOneBrandServlet" method="post">品牌名称:<input name="brandName"><br>企业名称:<input name="companyName"><br>排序:<input name="ordered"><br>描述信息:<textarea rows="5" cols="20" name="description"></textarea><br>状态:<input type="radio" name="status" value="0">禁用<input type="radio" name="status" value="1">启用<br><input type="submit" value="提交">
</form>
</body>
</html>

web.xml

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name>
</web-app>

=============================================================

接口:

首页:http://localhost:8090/jsp/SelectAllServlet

新增:http://localhost:8090/jsp/addBrand.jsp

修改:http://localhost:8090/jsp/selectOneBrandByIdServlet?id=4

删除:http://localhost:8090/jsp/deleteOneBrandServlet

演示效果:

Javaweb8==未实现前后端分离的列表展示、新增、删除、修改功能。 servlet(逻辑处理,封装数据进域对象,转发到jsp)+jsp(el表达式获取域对象中的数据+JSTL替换if for)。相关推荐

  1. js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...

    原文链接: 总结: el表达式获取map对象的内容 后端: HashMap map1 = new HashMap(); map1.put("key1","lzsb&quo ...

  2. SSM项目/SpringBoot项目/SpringBoot+Vue前后端分离项目 图片上传并查看功能实现汇总

    SSM项目下的图片上传: 1.前端Js代码:用户点击"上传头像"按钮后,会执行uploadPhoto()的方法. <button type="button" ...

  3. MVP实现购物车(二级列表),删除结算功能,拦截器+封装okHttp

    图片 依赖 compile 'com.squareup.okhttp3:okhttp:3.9.1'compile 'com.google.code.gson:gson:2.8.+'compile 'c ...

  4. 使用EL表达式,显示Action中的数据

    在用struts的时候,发现jsp页面有个${contentPath} ,这让我感觉很困惑,这个contentPath的变量是从哪里传过来的呢? 后来发现${}其实是jsp页面中的EL表达式,方便js ...

  5. Spring Boot + Spring-Security实现前后端分离双重身份认证初学者指南(手机号密码JWT + 短信验证码)

    折(mo)腾(yu)了好几天,终于把双重身份认证实现了.(账号密码jwt+短信验证码) 看了很多视频,照葫芦画瓢敲了两三次,遇到各种各样的bug,比如循环依赖(通过@PostConstructor+s ...

  6. springboot集成springSecurity,jwt实现前后端分离

    ** ## springboot集成springSecurity,jwt实现授权,查看权限,获取用户信息:] 简单的springsecurity授权登录校验我就暂时不写了,博客太多了: 第一步:还是导 ...

  7. web前后端分离开发部署模式

    web前后端分离开发部署模式 在开始讨论这个话题之前我们先来认识一下传统的开发模式. 一.传统开发模式 相信很多做过Web开发童鞋应该都会经历这样一种开发模式,利用后端语言提供的模版引擎编写HTML/ ...

  8. SpringBoot+Vue前后端分离实战(用户注册登录)

    文章目录 前言 注册 前端部分逻辑 发送请求 后端处理 登录 前端获取token 前端token状态管理 后端处理 用户登录 生成token 拦截器设置 总结 前言 昨天抽空终于把后端架起来了,准备开 ...

  9. 前后端分离和微服务_为什么说微服务,要从前后端分离开始?一文带你揭秘深入微服务...

    前言 既要低头赶路,又要抬头望天,科技是为人服务的,任何技术背后都有更深层次的考量. 之前的文章中咱们聊了很多微服务的相关内容,简而言之,微服务的本质,就是一种可以加速分工.促进合作的新协作机制.知其 ...

最新文章

  1. Jacobian矩阵的几何意义
  2. linux git2.8.0下载,Linux 环境下 jdk1.8 maven3.2.3 Git2.8.0 安装脚本
  3. c语言findnext递归扫描文件,C++用FindFirstFile、FindNext递归遍历硬盘的文件-Go语言中文社区...
  4. 八皇后(信息学奥赛一本通-T1214)
  5. json to graphql schema: json2graphql
  6. 根据ip高精度查地址网址
  7. 路由器的硬件测试软件,路由器也跑分?路由器测试App路小胖体验
  8. Java面试学习资源
  9. Eclipse-cpp-2022-03下载地址
  10. 《Python程序设计基础(第2版)》习题答案
  11. bugku-writeup-MISC-宽带信息泄露
  12. web前端(HTML的CSS样式和JavaScript)
  13. 蓝桥杯训练 日期计算
  14. 电脑记账最简单的方法
  15. 在毫秒量级上做到“更快”!DataTester 助力飞书提升页面秒开率
  16. Python之绘制七段数码管
  17. 苹果14pro Max来了,做第一批吃蟹人
  18. DM6467的CAN模块调试(SPI转CAN)
  19. PHP集运系统源码 国际物流集运转运系统源码
  20. 服务器被劫持,恶意注入js

热门文章

  1. IDEA中引入框架并配置artifact后,启动tomcat无法访问项目
  2. element input自定义正则验证
  3. 腾讯云系统镜像和使用镜像创建云主机
  4. DICOM:dcm4che工具包如何压缩dcm文件探讨(续篇)
  5. EasyUI(1):快速搭建系统界面
  6. [转]GridView控件使用经验
  7. 直播软件开发Android直播悬浮窗实现
  8. c语言的真假,C语言丨还没搞懂逻辑运算符?一篇文章教你区分“真假”!
  9. IT行业发展前景如何?揭秘2019年IT行业发展趋势
  10. 【一起学Rust | 开源项目】效率提升工具espanso——在日常输入中使用代码提示