千家信息网

Servlet和Jsp知识点有哪些

发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,这篇文章将为大家详细讲解有关Servlet和Jsp知识点有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。新建Servlet重写service方法,
千家信息网最后更新 2025年01月28日Servlet和Jsp知识点有哪些

这篇文章将为大家详细讲解有关Servlet和Jsp知识点有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

新建Servlet

重写service方法,service方法有两个参数:req和resp,在jsp中叫做request和response。

编码设置

resp.setContentType("text/html;charset=utf-8");req.setCharacterEncoding("utf-8");

创建Service层对象

UserService us = new UserServiceImpl();

处理请求

如果一个servlet需要处理多个请求,那servlet就需要识别来的是哪一个请求,可以在jsp的form表单中加一个input标签

type属性值为hidden,这样不会影响页面效果,将所有区分请求的标签的name属性设成同一个,这里叫'oper',value设成不同的值。

在service方法中做判断,分别调用不同的方法

            //获取操作类型                        String oper = req.getParameter("oper");                        if("login".equals(oper)) {                                //调用登录校验方法                                CheckUserLogin(req,resp);                        }else if("reg".equals(oper)){                                //调用注册功能                                userReg(req,resp);                        }else if("out".equals(oper)){                                //调用退出功能                                userOut(req,resp);                        }else if("pwd".equals(oper)){                                //调用密码修改功能                                userChangePwd(req,resp);                        }else if("showAll".equals(oper)){                                //调用查看所有用户信息功能                                userShowAll(req,resp);                        }else {                                System.out.println("没有找到相应操作"+oper);                        }

req.getParameter("属性名")方法可以获取form表单中提交的数据。

那form表单如何知道要提交给哪个servlet处理呢?

通过设置form标签的action属性就可以,将action属性值设成servlet的别名。

那如果没有form表单,比如我只是在页面中点击一个按钮,想让servlet来处理,怎么实现?操作如下:

function tuichu(){        var flag = window.confirm("是否退出?");        if (flag) {            //利用form表单提交oper                [xss_clean]("
"); [xss_clean](""); [xss_clean]("
"); document.form1.submit(); }}

请求转发与重定向

在servlet中实现页面跳转有两种办法:请求转发和重定向

请求转发:

req.getRequestDispatcher("login.jsp").forward(req, resp);

请求转发还是一次请求,浏览器地址栏中的url不会改变,req中的数据仍然在。

重定向:

resp.sendRedirect("main.jsp");

重定向是两次请求,url改变,req中的数据没了。

Cookie和Session

不同请求见的数据流通如何完成?

req里的数据没了,是不能实现的。

有两种办法:cookie和session

cookie:将一些数据存在浏览器中,数据量较小。

基本使用方法:

//创建cookie Cookie c = new Cookie("uname", "zhangsan"); Cookie c2 = new Cookie("color","red");//设置cookie有效期,参数的单位是秒 c2.setMaxAge(3600);//设置路径c2.setPath("/Servlet03/gc");                    //添加到浏览器resp.addCookie(c);//临时存储resp.addCookie(c2);//通过上面设置的有效期,实现了cookie纪录一个小时的定长存储
         //获取cookie                Cookie[] cks = req.getCookies();                if(cks!=null) {                        for(Cookie c:cks) {                                System.out.println(c.getName()+":"+c.getValue());                        }                }

Session:将数据存在浏览器中,在cookie中存一个session的id连接到服务器端的session对象

基本使用方法:

                   String name = "张三";                                                //创建session对象                        HttpSession hs = req.getSession();                        //这行代码既是创建又是获取session                                                                        //设置session时效                        hs.setMaxInactiveInterval(5);//设置时间为5秒                                                hs.invalidate();//强制失效                                                //存储数据                        hs.setAttribute("name", name);

关于Servlet和Jsp知识点有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0