乱码优化

package com.example.filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebFilter("/*")
public class EncodingFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)  {try {//将请求,响应对象转换为HTTP协议相关HttpServletRequest httpServletRequest = (HttpServletRequest) request;HttpServletResponse httpServletResponse = (HttpServletResponse) response;//设置编码格式httpServletRequest.setCharacterEncoding("UTF-8");httpServletResponse.setContentType("text/html;charset=UTF-8");//放行chain.doFilter(httpServletRequest,httpServletResponse);}catch (Exception e){e.printStackTrace();}}
}

登录检查

package com.example.filter;import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebFilter(filterName = "LoginFilter", value = {"/addStudent.jsp","/listStudentServlet"})
public class LoginFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {try {//将请求,响应对象转换为HTTP协议相关HttpServletRequest httpServletRequest = (HttpServletRequest) request;HttpServletResponse httpServletResponse = (HttpServletResponse) response;//获取会话域中的数据Object username = httpServletRequest.getSession().getAttribute("username");if(username == null || "".equals(username)){//重定向到登录页面httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + "/stu/login.jsp");return;}//放行chain.doFilter(httpServletRequest,httpServletResponse);}catch (Exception e){e.printStackTrace();}}
}

优化JSP页面

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<html>
<head><title>学生管理系统首页</title>
</head>
<body><%--获取会话域中的数据如果获取到了则显示添加和查看功能的超链接如果没获取到则显示登录功能的超链接--%><c:if test="${sessionScope.username eq null}"><a href="${ctx}/stu/login.jsp">请登录</a></c:if><c:if test="${sessionScope.username ne null}"><a href="${ctx}/addStudent.jsp">添加学生</a><a href="${ctx}/listStudentServlet">查看学生</a></c:if>
</body>
</html>

addStudent.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<html>
<head><title>添加学生</title>
</head>
<body>
<form action="${ctx}/addStudentServlet" method="get" autocomplete="off">学生姓名:<input type="text" name="username"> <br>学生年龄:<input type="number" name="age"> <br>学生成绩:<input type="number" name="score"> <br><button type="submit">保存</button>
</form>
</body>
</html>

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<html>
<head><title>学生登录</title>
</head>
<body><form action="${ctx}/LoginStudentServlet" method="get" autocomplete="off">姓名:<input type="text" name="username"> <br>密码:<input type="password" name="password"> <br><button type="submit">登录</button>
</form>
</body>
</html>

listStudent.jsp

<%@ page import="java.util.ArrayList" %>
<%@ page import="com.example.domain.Student" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<html>
<head><title>查看学生</title>
</head>
<body>
<table width="600px" border="1px" align="center"><tr><th>学生姓名</th><th>学生年龄</th><th>学生成绩</th></tr><c:forEach items="${sessionScope.students}" var="stu"><tr align="center"><td>${stu.username}</td><td>${stu.age}</td><td>${stu.score}</td></tr></c:forEach>
</table>
</body>
</html>

报错

java.lang.ClassNotFoundException: org.apache.taglibs.standard.tlv.JstlCoreTLV
java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSupport

解决方法

        <!--jstl--><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--java.lang.ClassNotFoundException: org.apache.taglibs.standard.tlv.JstlCoreTLV--><dependency><groupId>org.apache.taglibs</groupId><artifactId>taglibs-standard-impl</artifactId><version>1.2.5</version></dependency><!--javax/servlet/jsp/jstl/core/ConditionalTagSupport--><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency><dependency><groupId>org.glassfish.web</groupId><artifactId>jstl-impl</artifactId><version>1.2</version></dependency>

servlet ---- 案例(简单)优化相关推荐

  1. 微信小程序小案例——简单数据增删改查模拟

    微信小程序小案例--简单数据增删改查模拟 应同学导师之邀,要做一个微信小程序,虽然没接触过,本着不会就学的态度就接了.这里就简单记录下制作过程,方便以后自己查找.(此处是粗糙版本,练习用的数据模拟)也 ...

  2. jsp java 登陆_jsp+java servlet实现简单用户登录

    jsp+java servlet实现简单用户登录(使用数据库,包括注册页面) 功能介绍 本项目通过使用jsp和servlet实现简单的用户登录.主要逻辑为:如果用户不存在,则首先进行注册(注册信息同步 ...

  3. 深入浅析nginx部署及简单优化

    Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.本文重点给大家介绍nginx部署及简单优化方案,感兴趣的朋友一起看看吧 Nginx是lgor Sysoev为俄 ...

  4. 电脑编程用户注册界面java_用JSP/Servlet开发简单的用户注册系统

    用JSP/Servlet开发简单的用户注册系统 2.4界面编程实现 通过JavaBeans封装了大部分的逻辑或数据操作功能.这样,JSP页面中就可以减少很多Java代码,从而使得JSP的建立和修改变得 ...

  5. MySQL查看状态及简单优化

    MySQL查看状态及简单优化 使用show status命令 含义如下: aborted_clients 客户端非法中断连接次数 aborted_connects 连接mysql失败次数 com_xx ...

  6. 浅谈html的语义化和一些简单优化,html标签语义化

    1.什么是语义化? 必应网典的解释 语义化是指用合理HTML标记以及其特有的属性去格式化文档内容.通俗地讲,语义化就是对数据和信息进行处理,使得机器可以理解. 语义化的(X)HTML文档有助于提升你的 ...

  7. 双数组trie树的基本构造及简单优化

    一 基本构造 Trie树是搜索树的一种,来自英文单词"Retrieval"的简写,可以建立有效的数据检索组织结构,是中文匹配分词算法中词典的一种常见实现.它本质上是一个确定的有限状 ...

  8. 浅谈html的语义化和一些简单优化,浅谈HTML的语义化和一些简单优化

    下面小编就为大家带来一篇浅谈HTML的语义化和一些简单优化.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 1.什么是语义化? 必应网典的解释 语义化是指用合理HTML标 ...

  9. 简单mysql优化_MySQL简单优化

    一:MySQL简单优化方式 1.避免使用全表查询 2.使用表别名 3.注意where子句连接顺序: 4.使用">="代替">" 5.用truncat ...

最新文章

  1. 广州创龙TMS320C6748 DSP开发板免费申请试用
  2. python面向对象进阶
  3. 开发app用户协议_家电商城APP开发,方便用户选购家电商品
  4. 互斥量和信号量的区别
  5. php获取数据库的表名和字段名
  6. linux安全策略查询代码,Linux多安全策略和动态安全策略框架模块代码分析报告(14)...
  7. 【学术】论文读不懂怎么办?
  8. Python说文解字_杂谈07
  9. WPF 控件专题 StackPanel控件详解
  10. 5年做100款游戏是什么体验?“高产”开发者的10条心得
  11. 从APNIC获取中国IP地址列表
  12. 数字逻辑_半加器_全加器_全减器_乘法器
  13. php之sprintf的用法,PHP之sprintf函数用法详解
  14. blackbox_exporter 黑盒监测
  15. 体脂秤里的测脂模块方案,测量体脂全靠它?
  16. L2/L2+级ADAS市场爆发,国产芯片厂商迎来了关键时刻
  17. C#零基础入门运动控制学习教程(3)--定长加减速运动实验
  18. Usb rndis,mtp等function添加,config配置
  19. python目前的最新版本是_最新版Python 3.8.6 版本发布
  20. python删除文件夹无法访问_人生苦短 我学Python——anaconda和Jupyter notebook安装使用...

热门文章

  1. Green Deep Learning:NLP在大模型之外的另一种思路!
  2. Leetcode每日一题:46.permutations(全排列)
  3. 词向量算法—Word2Vec和GloVe
  4. KNN回归python实现
  5. python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上
  6. futuretask java 并发请求_Java面试题整理一(侧重多线程并发)
  7. linux mysql 主从分离_MySQL主从分离基本配置
  8. 向内存中连续存入数据_实例35_在Excel中按条件筛选数据并存入新的表
  9. SpringBoot实战教程(3)| 整合Thymeleaf
  10. Oracel 连接远端服务器