最终环境配置:
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 {
@Override
protected 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);
}
@Override
protected 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语句书写)标签完整实现题目所提的要求:示例如下=========================================================
======================================================================
项目结构:
建表SQL,数据库名db1,密码1234
/*
Navicat MySQL Data Transfer
Source Server : ldj
Source Server Version : 50724
Source Host : localhost:3306
Source Database : db1
Target Server Type : MYSQL
Target Server Version : 50724
File Encoding : 65001
Date: 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;
@Override
public 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_brand
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete
from tb_brand
where 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_brand
set 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 configuration
PUBLIC "-//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 {
@Override
protected 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);
}
@Override
protected 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 {
@Override
protected 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);
}
@Override
protected 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 {
@Override
protected 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);
}
@Override
protected 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 {
@Override
protected 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);
}
@Override
protected 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 {
@Override
protected 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);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
addBrand.jsp
<%--
Created by IntelliJ IDEA.
User: ldj
Date: 2021/10/27
Time: 18:03
To 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
演示效果: