JavaWeb小知识点整理

重定向特点

在这里插入图片描述
1、浏览器地址栏会发生变化
2、两次请求
3、不共享Request域中的数据
4、不能访问WEB-INF下的资源
5、可以访问工程外的资源

JSP中setAttribute()和getAttribute()

setAttribute这个方法,在JSP对象中的session和request都有这个方法,这个方法作用就是保存数据,然后还可以用getAttribute方法来获取出来。
例如:有个User对象,User users=new User(“hong”,“男”);

1、 request.setAttribute(“users”,users)这个方法是将users这个对象保存在
request作用域中,然后在转发进入的页面就可以获取到你的值
2、session.setAttribute(“users”,users)。这个方法和上面唯一的区别就是作用域,就是在你整个程序启动的时候,如果在session中保存了数据,那么在你这个无论你在哪个页面,在什么时候都可以获取到这个值,全局的,只要你的这个程序是启动的。session默认的过期时间是30分钟,过期无效,可以去修改这个值。
3、request.getSession().setAttribute(“绑定名”,绑定值); 这段代码的意思就是:获取session对象,然后把要绑定对象/值 帮定到session对象上 用户的一次会话共享一个session对象。

${表达式}EL表达式知识点

EL表达式中对象名.属性名不找属性的值,而是找名字对应的getXxx方法,没有此方法会报错
且属性原来大写的首字母要改成小写(规则:属性如果有两个或两个以上字母大写,则第二个大写字母不能小写,其余都可小写),
如getTotalCount()方法,
想要查询它的属性方法:sessionScope.cart.totalCount

EL表达式输出Java类的属性

创建Person类

public class Person {
    //输出Person类中普通属性,数组属性,list集合属性和map集合属性
    private String name;
    private String[] phones;
    private List<String> cities;
    private Map<String, Object> map;
    //注意:没有声明age属性
    public int getAge() {
        return 18;
    }
    //以及全参、空参构造器,各属性的getter/setter方法
}

测试:

<body>
    <%
        Person person = new Person();
        person.setName("JayChou");
        person.setPhones(new String[]{"123","456","789"});
        //给cities属性赋值
        List<String> cities = new ArrayList<String>();
        cities.add("北京");
        cities.add("上海");
        cities.add("深圳");
        person.setCities(cities);
        //给map属性赋值
        Map<String,Object> map = new HashMap<>();
        map.put("key1","value1");
        map.put("key2","value2");
        map.put("key3","value3");
        person.setMap(map);
        pageContext.setAttribute("p", person);
    %>
    <%--EL表达式中对象名.属性名不找属性的值,而是找名字对应的getXxx方法,没有此方法会报错--%>
    输出Person:${ p }<br/>
    输出Person的name属性:${p.name} <br>
    输出Person的phones数组地址值:${p.phones} <br>
    输出Person的phones数组属性值:${p.phones[2]} <br>
    输出Person的cities集合中的元素值:${p.cities} <br>
    输出Person的List集合中个别元素值:${p.cities[2]} <br>
    输出Person的Map集合: ${p.map} <br>
    输出Person的Map集合中某个key的值: ${p.map.key1} <br>
    <%-- 注意,即使没有age属性,但因为有getAge方法,也可得出结果 --%>
    输出Person的age值:${p.age} <br>
</body>


在这里插入图片描述

JQuery语法中的attr()和prop()方法

attr()方法:可以设置和获取属性的值,不推荐操作checked、selected、disabled、readOnly,还可 以操作自定义属性
prop()方法:可以设置和获取属性的值,只推荐操作checked、selected、disabled、readOnly
示例:

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="jquery-1.7.2.js"></script>
    <script type="text/javascript">
        $(function () {
            //attr获取的使用:括号中的双引号中放属性名
            alert($(":checkbox:first").attr("name")); //checkbox
            //attr赋值的使用:第一个双引号中放属性名,第二个双引号中放指定的值
            $(":checkbox:first").attr("name","abc"); //name属性值修改为abc
            $(":checkbox").prop("checked",false); //两个都未被选中
            //对自定义属性进行操作
            $(":checkbox:first").attr("abc","abcValue");
            //按F12可出现,临时存放一些数据
        })
    </script>
</head>
<body>
    <input type="checkbox" name="checkbox" value="checkbox1" checked="checked"/>checkbox1
    <input type="checkbox" name="checkbox" value="checkbox2"/>checkbox2
    <div>1234</div>
    <div>1234</div>
</body>

request.getParameter()方法介绍与request.getParameterValues()的区别

区别
request.getParameterValues(String name)是获得如checkbox类(名字相同,但值有多个)的数据。
可以用于接收数组变量 ,如checkobx类型
request.getParameter(String name)是获得相应名的数据,如果有重复的名,则返回第一个的值 .
一般用于接收一般变量 ,如text类型
使用方式
例1:对于text类型的input标签

    <input type="text" name="name" value="1" /> 
    <input type="text" name="name" value="2" /> 
    <input type="text" name="name" value="3" />

request.getParameterValues(“name”) ----------------- [1, 2, 3]

request.getParameter(“name”) ------------------ 1

例2:对于checkbox的input标签

<input type="checkbox" name="habit" value="read">看书
<input type="checkbox" name="habit" value="movie">电影
<input type="checkbox" name="habit" value="game">游戏

request.getParameterValues(“habit”) ----------------- [read, movie, game]

request.getParameter(“name”) ------------------ read

tips
对于getParameter()方法获取的中文字符乱码的情况,尝试添加一句
request.setCharacterEncoding(“utf-8”);

Jsp四大域对象

在这里插入图片描述

"/"的不同情况下的不同含义

“/”若被浏览器解析,得到的地址是:http://ip:port/
(1) 斜杠
“/”若被服务器解析,得到的地址是:http://ip:port/工程路径
(1) /servlet1
(2) servletContext.getRealPath(“/”);
(3) request.getRequestDispatcher(“/”);
重定向:特殊情况:response.sendRedirect(“/”); 把斜杠发送到浏览器解析,得到http://ip:port/

HttpServletRequest类语法

setAttribute(key, value)将信息保存到域中

getAttribute(key):获取域数据

请求转发getRequestDispatcher()参数规范

参数以"/"开头,对应IDEA代码中的web目录
getRequestDispatcher():获取请求转发对象
//参数必须以斜杠打头,斜杠代表http://localhost:8080/工程名/,
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Servlet2");

表单标签

(1) form标签代表表单标签
1.action属性设置提交的服务器地址
2. method属性设置提交的方式:get(默认)或post

添加Library流程

在这里插入图片描述

base 标签

base标签可以设置当前页面中所有相对路径跳转时参照指定的路径来进行跳转,在href属性中设置指定路径
base 标签一般放在< title >标签之后
实例:

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--base标签写在<title>标签之后-->
    <base href="http://localhost:8080/MyTest/a/b/">
</head>
<body>
    这是a下的b下的c.html<br/>
    <a href="../../index.html">跳到web下的index.html</a>
</body>

Session会话

打开浏览器访问服务器,直到关闭浏览器,会话结束。

EL表达式和JSTL标签

EL表达式主要替代JSP的表达式脚本
JSTL主要替代JSP的代码脚本

怎么利用别的设备访问自己写的网站

使用到的方法

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%-- 先通过pageContext对象获取request、session对象,再获取以下内容 --%>
    <%--
        获取请求的协议:request.getScheme()
        获取请求的服务器ip或域名:request.getServerName()
        获取请求的服务器端口号:request.getServerPort()
        获取当前工程路径:request.getContextPath()
        获取请求的方式:request.getMethod()
        获取客户端的ip地址:request.getRemoteHost()
        获取会话的唯一标识:session.getId()
    --%>
1.协议: ${ pageContext.request.scheme }<br>
2.服务器ip:${ pageContext.request.serverName }<br>
3.服务器端口:${ pageContext.request.serverPort }<br>
4.获取工程路径:${ pageContext.request.contextPath }<br>
5.获取请求方法:${ pageContext.request.method }<br>
6.获取客户端ip地址:${ pageContext.request.remoteHost }<br>
7.获取会话的id编号:${ pageContext.session.id}<br>
</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值