Javaweb8==未实现前后端分离的列表展示、新增、删除、修改功能。 servlet(逻辑处理,封装数据进域对象,转发到jsp)+jsp(el表达式获取域对象中的数据+JSTL替换if for)。
最终环境配置:
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)。相关推荐
- js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...
原文链接: 总结: el表达式获取map对象的内容 后端: HashMap map1 = new HashMap(); map1.put("key1","lzsb&quo ...
- SSM项目/SpringBoot项目/SpringBoot+Vue前后端分离项目 图片上传并查看功能实现汇总
SSM项目下的图片上传: 1.前端Js代码:用户点击"上传头像"按钮后,会执行uploadPhoto()的方法. <button type="button" ...
- MVP实现购物车(二级列表),删除结算功能,拦截器+封装okHttp
图片 依赖 compile 'com.squareup.okhttp3:okhttp:3.9.1'compile 'com.google.code.gson:gson:2.8.+'compile 'c ...
- 使用EL表达式,显示Action中的数据
在用struts的时候,发现jsp页面有个${contentPath} ,这让我感觉很困惑,这个contentPath的变量是从哪里传过来的呢? 后来发现${}其实是jsp页面中的EL表达式,方便js ...
- Spring Boot + Spring-Security实现前后端分离双重身份认证初学者指南(手机号密码JWT + 短信验证码)
折(mo)腾(yu)了好几天,终于把双重身份认证实现了.(账号密码jwt+短信验证码) 看了很多视频,照葫芦画瓢敲了两三次,遇到各种各样的bug,比如循环依赖(通过@PostConstructor+s ...
- springboot集成springSecurity,jwt实现前后端分离
** ## springboot集成springSecurity,jwt实现授权,查看权限,获取用户信息:] 简单的springsecurity授权登录校验我就暂时不写了,博客太多了: 第一步:还是导 ...
- web前后端分离开发部署模式
web前后端分离开发部署模式 在开始讨论这个话题之前我们先来认识一下传统的开发模式. 一.传统开发模式 相信很多做过Web开发童鞋应该都会经历这样一种开发模式,利用后端语言提供的模版引擎编写HTML/ ...
- SpringBoot+Vue前后端分离实战(用户注册登录)
文章目录 前言 注册 前端部分逻辑 发送请求 后端处理 登录 前端获取token 前端token状态管理 后端处理 用户登录 生成token 拦截器设置 总结 前言 昨天抽空终于把后端架起来了,准备开 ...
- 前后端分离和微服务_为什么说微服务,要从前后端分离开始?一文带你揭秘深入微服务...
前言 既要低头赶路,又要抬头望天,科技是为人服务的,任何技术背后都有更深层次的考量. 之前的文章中咱们聊了很多微服务的相关内容,简而言之,微服务的本质,就是一种可以加速分工.促进合作的新协作机制.知其 ...
最新文章
- Jacobian矩阵的几何意义
- linux git2.8.0下载,Linux 环境下 jdk1.8 maven3.2.3 Git2.8.0 安装脚本
- c语言findnext递归扫描文件,C++用FindFirstFile、FindNext递归遍历硬盘的文件-Go语言中文社区...
- 八皇后(信息学奥赛一本通-T1214)
- json to graphql schema: json2graphql
- 根据ip高精度查地址网址
- 路由器的硬件测试软件,路由器也跑分?路由器测试App路小胖体验
- Java面试学习资源
- Eclipse-cpp-2022-03下载地址
- 《Python程序设计基础(第2版)》习题答案
- bugku-writeup-MISC-宽带信息泄露
- web前端(HTML的CSS样式和JavaScript)
- 蓝桥杯训练 日期计算
- 电脑记账最简单的方法
- 在毫秒量级上做到“更快”!DataTester 助力飞书提升页面秒开率
- Python之绘制七段数码管
- 苹果14pro Max来了,做第一批吃蟹人
- DM6467的CAN模块调试(SPI转CAN)
- PHP集运系统源码 国际物流集运转运系统源码
- 服务器被劫持,恶意注入js
热门文章
- IDEA中引入框架并配置artifact后,启动tomcat无法访问项目
- element input自定义正则验证
- 腾讯云系统镜像和使用镜像创建云主机
- DICOM:dcm4che工具包如何压缩dcm文件探讨(续篇)
- EasyUI(1):快速搭建系统界面
- [转]GridView控件使用经验
- 直播软件开发Android直播悬浮窗实现
- c语言的真假,C语言丨还没搞懂逻辑运算符?一篇文章教你区分“真假”!
- IT行业发展前景如何?揭秘2019年IT行业发展趋势
- 【一起学Rust | 开源项目】效率提升工具espanso——在日常输入中使用代码提示