• JavaWeb、其他技术


    目录

    一、Filter

    1、Filter快速入门

    2、Filter执行流程

    3、Filter使用细节

    1、Filter拦截路径配置

    2、过滤器链

     4、案例:登陆验证

    二、Listener

    三、AJAX

    1、AJAX定义

             同步与异步

    2、AJAX快速入门

    3、使用AJAX验证用户名是否存在

     4、Axios异步框架

    1、快速入门

    2、Axios请求方式别名

    5、JSON

    1、JSON基础语法

    2、JSON数据和Java对象转换

    四、Vue

    1、Vue快速入门

    2、vue常用指令

    3、Vue生命周期

    五、Element

    1、Element快速入门

    2、Element布局

    3、Element组件

    六、JavaWeb终章案例


    一、Filter

    比如之前的登录案例,如果不登录直接访问后面的页面,它任然可以直接访问,那么做这个登陆注册页面将毫无用处,我们需要对每个页面进行过滤,查看用户是否登录

    1、Filter快速入门

    web三大组件:servlet、Filter、Listener,都在web包下新建包

    1. //拦截所有
    2. @WebFilter("/*")
    3. public class FilterDemo implements Filter {
    4. @Override
    5. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    6. System.out.println("hello。。。");
    7. //放行
    8. chain.doFilter(request,response);
    9. }
    10. @Override
    11. public void init(FilterConfig filterConfig) throws ServletException {
    12. }
    13. @Override
    14. public void destroy() {
    15. }
    16. }

    2、Filter执行流程

    1. //拦截所有
    2. @WebFilter("/*")
    3. public class FilterDemo implements Filter {
    4. @Override
    5. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    6. //执行前逻辑,对request进行操作
    7. System.out.println("hello。。。");
    8. //放行
    9. chain.doFilter(request,response);
    10. //执行后逻辑,对response进行操作
    11. System.out.println("执行后。。。");
    12. }

    3、Filter使用细节

    1、Filter拦截路径配置

    2、过滤器链

    先拦截的后执行,后拦截的先执行

    注解配置的Filter,优先级按照Filter的类名自然排序,也就是按照包下的Filter类上下顺序进行排序

     4、案例:登陆验证

    1. @WebFilter("/*")
    2. public class LoginFilter implements Filter {
    3. @Override
    4. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    5. //放行前逻辑
    6. HttpServletRequest req = (HttpServletRequest) servletRequest;
    7. //获取页面的Session
    8. HttpSession session = req.getSession();
    9. Object user = session.getAttribute("user");
    10. if (user == null){
    11. req.setAttribute("login_msg","请先登录");
    12. req.getRequestDispatcher("/html/index.jsp").forward(servletRequest,servletResponse);
    13. }
    14. filterChain.doFilter(servletRequest,servletResponse);
    15. }

     但是当访问页面时发现连CSS样式都被拦截过滤了

     要判断用户访问的是否是与登陆页面相关的资源,相关就要放行

    1. @WebFilter("/*")
    2. public class LoginFilter implements Filter {
    3. @Override
    4. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    5. //放行前逻辑
    6. //强转为HttpServletRequest
    7. HttpServletRequest req = (HttpServletRequest) servletRequest;
    8. //将与登陆相关的资源放进数组
    9. String[] urls = {"/html/","/css/","/login","/addUser","/check","/img/"};
    10. //获取当前的访问路径
    11. String uri = req.getRequestURI();
    12. //在资源数组中遍历,查看是否包含当前访问路径
    13. for (String s : urls) {
    14. if (uri.contains(s)){
    15. //与登陆资源相关
    16. //放行
    17. filterChain.doFilter(servletRequest,servletResponse);
    18. //如果当前资源是与登陆页面相关直接结束方法,不需要在执行后面的判断
    19. //因为后面的判断是防止用户跳过登录进入商品页面
    20. return;
    21. }
    22. }

    二、Listener

    三、AJAX

    1、AJAX定义

    原本是采用jsp使后端数据能够传到前端页面上,但是前端无法从后端获取数据,并且只能通过服务器启动,并传输数据。AJAX实现了前端页面与服务器进行交互,它能够获取服务端的数据返回到前端,实现了前后端分离,

     同步与异步

    2、AJAX快速入门

    前端

    后端

    1. @WebServlet("/ajaxServlet")
    2. public class AjaxServlet extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    5. PrintWriter writer = resp.getWriter();
    6. writer.write("hello,ajax.....");
    7. }
    8. @Override
    9. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    10. this.doGet(req, resp);
    11. }
    12. }

    3、使用AJAX验证用户名是否存在

     后端

    1. @WebServlet("/selectByName")
    2. public class SelectByName extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    5. //1、接收用户名
    6. String username = req.getParameter("username");
    7. //2、调用service判断用户名是否存在
    8. //3、用户名存在返回true
    9. boolean flag = true;
    10. //4、将查询的结果相应给前端
    11. PrintWriter writer = resp.getWriter();
    12. writer.write(""+flag);
    13. }
    14. @Override
    15. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    16. this.doGet(req, resp);
    17. }
    18. }

    前端

     4、Axios异步框架

     1、快速入门

    1. <script>
    2. //1、get
    3. /*axios({
    4. method:"GET",
    5. url:"http://localhost:8080/web_other_war/axios?username=zhangsan"
    6. }).then(function (resp) {
    7. alert(resp.data);
    8. });*/
    9. //2、post
    10. axios({
    11. method:"POST",
    12. url:"http://localhost:8080/web_other_war/axios",
    13. data:"username=zhangsan"
    14. }).then(function (resp) {
    15. alert(resp.data);
    16. })
    17. script>

    2、Axios请求方式别名

    5、JSON

    1、JSON基础语法

    2、JSON数据和Java对象转换

    1. public class JsonDemo {
    2. public static void main(String[] args) {
    3. //1、将java对象转成json对象
    4. User user = new User(1,"zhangsan","123");
    5. String s = JSON.toJSONString(user);
    6. System.out.println(s);
    7. //2、将Json字符串转成java对象
    8. User user1 = JSON.parseObject("{\"id\":1,\"password\":\"123\",\"username\":\"zhangsan\"}", User.class);
    9. System.out.println(user1);
    10. }
    11. }

    四、Vue

     1、Vue快速入门

    1. <html lang="en">
    2. <head>
    3. <meta charset="UTF-8">
    4. <title>Titletitle>
    5. head>
    6. <body>
    7. <div id="app">
    8. <input v-model="username" >
    9. {{username}}
    10. div>
    11. body>
    12. <script src="../js/vue.js">script>
    13. <script>
    14. //1、创建vue核心对象
    15. new Vue({
    16. el:"#app",
    17. data(){
    18. return{
    19. username:""
    20. }
    21. }
    22. })
    23. script>
    24. html>

    2、vue常用指令

    1. <div id="app">
    2. <input v-model="username" >
    3. {{username}}
    4. <a v-bind:href="url">百度一下a>
    5. <a :href="url">简化a>
    6. <input v-model="url">
    7. div>
    8. body>
    9. <script src="../js/vue.js">script>
    10. <script>
    11. //1、创建vue核心对象
    12. new Vue({
    13. el:"#app",
    14. data(){
    15. return{
    16. username:"",
    17. url:"https://www.baidu.com"
    18. }
    19. }
    20. })
    21. script>

     

    1. <input type="button" value="一个按钮" v-on:click="show">
    2. <input type="button" value="按钮简化" @click="show">
    3. <script>
    4. //1、创建vue核心对象
    5. new Vue({
    6. el:"#app",
    7. data(){
    8. return{
    9. username:"",
    10. url:"https://www.baidu.com"
    11. }
    12. },
    13. /*定义方法*/
    14. methods:{
    15. show(){
    16. alert("我被电了")
    17. }
    18. }
    19. })
    20. script>

    1. <body>
    2. <div id="app2">
    3. <div v-if="count == 1">div1div>
    4. <div v-else-if="count == 2">div2div>
    5. <div v-else>div3div>
    6. <hr>
    7. <div v-show="count == 2">v-showdiv>
    8. <input v-model="count">
    9. div>
    10. body>
    11. <script src="../js/vue.js">script>
    12. <script>
    13. new Vue({
    14. el:"#app2",
    15. data(){
    16. return{
    17. count:3
    18. }
    19. }
    20. })
    21. script>

    1. <body>
    2. <div id="app2">
    3. <div v-for="add in addrs">{{add}}div>
    4. <hr>
    5. <div v-for="(add,i) in addrs">
    6. {{i+1}}--{{add}}
    7. div>
    8. div>
    9. body>
    10. <script src="../js/vue.js">script>
    11. <script>
    12. new Vue({
    13. el:"#app2",
    14. data(){
    15. return{
    16. count:3,
    17. addrs:["北京","上海","广州","深圳"]
    18. }
    19. }
    20. })
    21. script>

    3、Vue生命周期

    五、Element

    1、Element快速入门

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    7. head>
    8. <body>
    9. <div id="app">
    10. <el-row>
    11. <el-button>默认按钮el-button>
    12. <el-button type="primary">主要按钮el-button>
    13. <el-button type="success">成功按钮el-button>
    14. <el-button type="info">信息按钮el-button>
    15. <el-button type="warning">警告按钮el-button>
    16. <el-button type="danger">危险按钮el-button>
    17. el-row>
    18. div>
    19. body>
    20. <script src="js/vue.js">script>
    21. <script src="https://unpkg.com/element-ui/lib/index.js">script>
    22. <script>
    23. //创建Vue核心对象
    24. new Vue({
    25. el:"#app",
    26. })
    27. script>
    28. html>

    2、Element布局

    3、Element组件

    六、JavaWeb终章案例

  • 相关阅读:
    【解决】Unity3D中无法在MQTT事件中执行Animator
    大数据技术Scala详解
    数据分析技能点-独立性检验&拟合优度检验
    2023_Spark_实验十六:编写LoggerLevel方法及getLocalSparkSession方法
    windows桌面运维----第六天
    【MFC】Button控件美化(自绘)
    地理空间技术改变世界的未来
    miniprogram-ci 使用说明
    npm常用命令与操作篇
    JVM之方法的调用
  • 原文地址:https://blog.csdn.net/m0_56044262/article/details/126439341