安工大web期末复习

考试题型

不严谨奥,自己随便写的,大纲是夏敏给的

选择(20分) 简答(30分) 页面样式设计(10分 主要是div+css布局) 程序设计(40分,javascritp2题、servlet1题 ,jsp1题)

考点分布

  1. css选择器、盒模型、浮动、定位(特别我们上课案例和实验涉及的页面布局)

  2. Javascript :数据类型、面向对象创建对象,内置对象比如math对象、定时器、事件驱动

  3. Servlet:生命周期、会话管理、获取参数、request与response对象的上课说的方法的使用

  4. Jsp:基本语法、内置对象、四大作用域、三大指令、el表达式、jstl标签

请务必根据上面的考点 来复习, 特别是红色背景部分。

js

定时器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.time{
				width: 350px;
				height: 50px;
				margin: 100px auto;
				border: 5px aqua solid;
			}
			span{
				font-size: 2em;
				color: dodgerblue;
			}
		</style>
		<script>
			window.onload=function(){
				var day=document.getElementById('day');
				var hour=document.getElementById('hour');
				var minute=document.getElementById('minute');
				var second=document.getElementById('second');
				countDown();
				// day.innerHTML=20;
				setInterval(countDown,1000);
				function countDown(){
					var d=+new Date();
					var dt=+new Date(2023,0,1);
					var st=dt-d;
					st=st/1000;
					var d=parseInt(st/60/60/24);
					if(d<10){
						d='0'+d;
					}
					day.innerHTML=d;
					var h=parseInt(st/60/60%24);
					if(h<10){
						h='0'+h;
					}
					hour.innerHTML=h;
					var m=parseInt(st/60%60);
					if(m<10){
						m='0'+m;
					}
					minute.innerHTML=m;
					var s=parseInt(st%60);
					if(s<10){
						s='0'+s;
					}
					second.innerHTML=s;
				}
			}
		</script>
	</head>
	<body>
		<div class="time">
			距离元旦还剩:
			<span id='day'>00</span><b></b>
			<span id='hour'>00</span><b></b>
			<span id='minute'>00</span><b></b>
			<span id='second'>00</span><b></b>
		</div>
	</body>
</html>

面向对象创建对象

  1. 构造函数方式

    1. function Person(name, age) {
          this.name = name
          this.age = age
          this.sayName = function() {
              console.log(this.name)
          }
      }
      
      var p1 = new Person('yuki', 23)
      
  2. 工厂模式

    1. function createPerson(name, age) {
          var obj = new Object()
          obj.name = name
          obj.age = age
          obj.sayName = function() {
              console.log(this.name)
          }
          return obj
      }
      
      var p1 = createPerson('yuki', 23)
      
  3. 原型模式

    1. function Person(name, age) {
          this.name = name
          this.age = age
      }
      
      Person.prototype.sayName = function() {
          console.log(this.name)
      }
      
      var p1 = new Person('yuki', 23)
      console.log(p1.name) // 'yuki'
      var p2 = new Person('77', 18)
      console.log(p2.name) // '77'
      
      console.log(p1.sayName === p2.sayName) // true
      

math对象

var i;
i=Math.round(5/2) //四舍五入
i=Math.floor(5/2)//取整 向下取整
Math.abs(-100)//绝对值
i=Math.random()//随机数 0-1之间
i=Math.random()\*10//产生0-10之间的随机数?
i=Math.random()\*5+5//产生5-10之间的随机数?

var arr=["鱼头豆腐","红烧排骨","土豆丝","西红柿鸡蛋汤","鸦片鱼头","小鸡炖蘑菇"];
i=Math.floor(Math.random()*arr.length);
document.write(arr[i]);
console.log(arr[i]);

事件驱动

<head>
    <meta charset='utf-8'>
    <script>
            window.onload=function(){
                let btn=document.querySelector('button')
                let text=document.querySelector('#txt1')
                btn.onclick=function(){
                    text.value='hello world'
                }
            }
    </script>
</head>
<body>
    <input type="text" id="txt1">
    <button>提交</button>
</body>

servlet

会话管理

@WebServlet(name = "CookieServlet", value = "/CookieServlet")
public class CookieServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html; charset=utf-8");
        //获取cookie
        Cookie[] cookies = request.getCookies();
        //取出cookie中的值
        String username = "";
        if (cookies != null && cookies.length > 0) {
            for (Cookie cookie : cookies) {
                if ("username".equals(cookie.getName())) {
                    username = cookie.getValue();
                    break;
                }
            }
        }
        if ("".equals(username)){
            System.out.println("没有账号,进入登录界面");
            request.getRequestDispatcher("csslogin.jsp").include(request, response);
        }
        else {
            request.setAttribute("username",username);
            request.getRequestDispatcher("welcome.jsp").forward(request,response);
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

获取参数

public class DoLog extends HttpServlet{
    public DoLog(){
        super();
    }
    
    void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException{
        String uname=request.getParameter('username')
        String pwd = request.getParameter('password')
        out.println(uname+' '+pwd)
        out.close
    }
}

request

request.getParameter(arg0) 取得参数,返回值String类型

request.getParameterValues(arg0) 同一个key,有多个value的情况的参数值,注意这是一个数组

String hobbies[] = request.getParameterValues(“hobby”);

request.setCharacterEncoding(arg0) 设置参数的字符编码,仅针对post请求有效

request.setAttribute(arg0,arg1) 在request域中存值

request.getAttribute(arg0) 从request域中取值

request.getContextPath() /项目名

request.getCookies() 取得浏览器访问时携带的所有的cookie对象

request.getSession() 取得一个session对象

response

setCharacterEncoding(String env)
setContentType(String type)
getWriter()
addCookie(Cookie cookie)
setHeader(String name,String value)
addHeader(String name,String value)
sendRedirect(String location)

jsp

el表达式

  • 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。

    • 例如:user.My−Name应当改为{user.My-Name}应当改为user.MyName应当改为{user[“My-Name”] }
  • 如果要动态取值时,就要用[]来做。

    • ${sessionScope.user[data]}中data 是一个变量
  • expression language

简答题题库

试说明servlet生命周期分为哪几个阶段?

  1. 加载阶段
  2. 初始化阶段
  3. 请求处理
  4. 销毁阶段

HttpSession 、cookie的作用各是什么?各个特点有哪些?代码说明使用方法

  1. 作用

    • Session的根本作用就是在服务端存储用户和服务器会话的一些信息
    • Cookie的根本作用就是在客户端存储用户访问网站的一些信息
  2. cookie和session的特点

    • Cookie特点:cookie是将数据保存在浏览器端,是一门浏览器端的技术。由于数据保存在浏览器端,所以可以被任意的查看,安全性较低,但是可以长时间存储数据。cookie善于存储安全性要求较低,但是存储时间较长的数据。
    • Session特点:session是将数据保存在服务器端,是一门服务器端的技术,数据保存在服务器端相对安全,但是服务器无法保留大量session对象,所以不能够长时间存储数据。服务器善于存储安全性要求较高,但是存储时间较短的数据。
  3. session和cookie的区别

    • 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于才服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择,比如说重写 URL和隐藏表单域。
 public void sessionExample(
         HttpServletRequest request, 
         HttpServletResponse response
 	)  throws IOException, ServletException {
     	String userid = request.getParameter("username");
     	HttpSession session = request.getSession();
     	session.setAttribute("usrid", userid);
    }  
<script type="text/javascript">
	var user = document.querySelector('#username');
	if(!getCookie()){
		user.value = setCookie('nice');
	}
	function setCookie(name){
		document.cookie=name;
	}
	function getCookie(){
		return document.cookie;
	}
</script>

试说明Web客户端和服务器之间的交互是什么协议?该协议有哪两大特点?

  1. HTTP协议(超文本传输协议)
  2. 无连接/无状态
    • 无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。
    • 限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。

请给出javascript代码实现点击按钮

页面上有下列元素 ,请给出javascript代码实现点击按钮,让文本框显示“hello world”文本信息。

<head>
    <meta charset='utf-8'>
    <script>
            window.onload=function(){
                let btn=document.querySelector('button')
                let text=document.querySelector('#txt1')
                btn.onclick=function(){
                    text.value='hello world'
                }
            }
    </script>
</head>
<body>
    <input type="text" id="txt1">
    <button>提交</button>
</body>

在JSP中提供了哪四种属性的保存范围,请列出并说明其范围?

  1. page:在一个页面内保存属性,跳转之后无效
2.   request:在一次服务请求范围内,服务器跳转后依然有效
  1. session:-在一次会话范围内,无论何种跳转都可以使用,但是新开浏览器无法使用
  2. application:在整个服务器上保存,所有用户都可以使用
名称作用域
application在所有应用程序中有效
session在当前会话中有效
request在当前请求中有效
page在当前页面有效

给出JSP有3大基本指令并说明他们的作用?

JSP命令指令用来设置与整个JSP页面相关的属性,请给出JSP有3大基本指令并说明他们的作用?

  1. page指令

    • page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页

  2. Include指令;

    • include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP

      翻译成一个servlet。所以include指令引入通常也称之为静态引入。

  3. taglib指令

    • 在jsp页面中导入jstl标签库,替换jsp中的java代码片段

请用html代码举例说明CSS 类选择器的使用方式?

1. 标签选择器

<title>标签选择器</title>
<style type="text/css">
    h1{                          /*此处h1就为选择器*/
        font-size:25px;          /*文字大小定为25px*/
        color:red;               /*文字颜色定为红色*/
        border:1px solid green;  /*设定文字边框绿色1px*/
    }
</style>

2. 类选择器

<style type="text/css">
.set{               /*set为类选择器*/
    color:green;    /*设置颜色为绿色*/
}
</style>
</head>
<body>
    <h1>类选择器</h1>
    <p><span class="set">类选择器</span>

3. id选择器

<style type="text/css">
#set{            /*ID选择器*/
    font-weight:900; /*设置字体为粗体*/
}
</style>
</head> 
<body>
    <p>使用 <span id="set">bold </span>

4. 子选择器

<style type="text/css">
.child>li{               /*子选择器,只会对第一代子元素生效*/
    border:1px solid red;/*添加边框样式粗细为1px,颜色为红色的实线*/
}
</style>
</head>
<body>
<h1>子选择器</h1>
<ul class="child">
    <li>子列表1              <!--第一代子元素-->
        <ul>
        	<li>one</li>     <!--第二代子元素-->
            <li>two</li>
            <li>three</li>
        </ul>
    </li>
    <li>子列表2              <!--第一代子元素-->
    	<ul>
        	<li>first</li>
            <li>second</li>
            <li>third</li>
        </ul>
    </li>
</ul>

5.包含选择器

<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
<title>包含(后代)选择符</title>  
<style type="text/css">  
.include li{               /*包含选择器,对所有子元素生效*/  
    border:1px solid red;/*添加边框样式粗细为1px,颜色为红色的实线*/  
}  
</style>  
</head>  
<body>  
<ul class="include">  
    <li>子列表1              <!--第一代子元素-->  
        <ul>  
            <li>one</li>     <!--第二代子元素-->  
            <li>two</li>  
        </ul>  
    </li>  
    <li>子列表2              <!--第一代子元素-->  
        <ul>  
            <li>first</li>  
            <li>second</li>  
        </ul>  
    </li>  
</ul>  
</body>

6.通用选择器
<style type="text/css">
* {
    color:red;
}
 
</style>
</head>
<body>
   <body>
    <h1>通用选择器</h1>
    <p>paragragh1</p>
    <p>paragragh2</p>
</body>

7.伪类选择符
<style type="text/css">
p:hover{          /*鼠标划过p标签时内容样式*/
    color:red;
    font-size:20px;
}
</style>
</head>
<body>
    <h1>勇气</h1>
    <p> 到目前为止,可以兼容所有浏鉴器的“伪类选择符”就是 a 标签上使用 :hover 了,也是最常用的组合了。</p>
</body>

JSP有哪些内置对象?作用分别是什么?

jsp共有以下9个内置对象:

  1. request 客户端请求,此请求会包含GET/POST请求的参数
  2. response 网页传回客户端的回应
  3. pageContext 网页的属性是在这里管理
  4. session 请求有关的会话期
  5. application servlet正在执行的内容
  6. out 用来传送回应的输出
  7. config servlet的架构部分
  8. page jsp页面网页本身
  9. exception 针对错误网页,未捕捉的例外

javascript哪些数据类型

六种基本数据类型

  • undefined
  • null
  • string
  • boolean
  • number
  • symbol(ES6)

一种引用类型

  • Object

重点实验总结

各种css+div布局 比如下图

在这里插入图片描述
在这里插入图片描述

<style type="text/css">
    header {
        height: 120px;
        width: 800px;
        background: greenyellow;
        margin: 15px auto;
        padding-top: 10px;
    }
    nav,footer {
        height: 120px;
        width: 800px;
        background: blueviolet;
        margin: 15px auto;
        padding-top: 10px;
    }
    main {
        height: 300px;
        width: 800px;
        margin: 15px auto;
    }
    main article {
        height: 100%;
        width: 500px;
        background: greenyellow;
        float: left;
        padding-top: 10px;
    }
    main aside {
        height: 100%;
        width: 300px;
        background: yellow;
        float: left;
        padding-top: 10px;
    }
</style>
</head>
<body>
    <header> header: 头部标签</header>
    <nav> nav: 导航栏</nav>
    <main>
        <article>article:左边</article>
        <aside>aside: 右边</aside>
    </main>
    <footer>footer: 底部</footer>
</body>

实现页面的“全选”功能

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			window.onload=function(){
				var checkAll=document.querySelector('#chkAll')
				checkAll.onclick=function(){
					var check=document.querySelectorAll('input')
					for (var i=0;i<chk.length;i++){
                        chk[i].checked=checkAll.checked
                    }
				}
			}
		</script>
	</head>
	<body>
	<input type="checkbox" id="chkAll"/>全选<br />
	<input type="checkbox" ><br />
	<input type="checkbox" ><br />
	<input type="checkbox" ><br />
	<input type="checkbox" ><br />
	<input type="checkbox" ><br />
	</body>
</html>

页面跳转/response

3、实现页面“登录”功能(暂时不连数据库)。具体流程如下,用户可以在登录页面进行会员登录,如果用户输入的用户名为”admin”,密码是“123”,则登录成功,跳转到欢迎页面,否则登录失败再返回登录页面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Js2DN6lm-1676876020936)(F:\MarkDown\pics\clip_image010.jpg)]

提示:页面跳转可以用过以下方法完成

response.sendRedirect(“welcome.jsp”);

这里用的是相对路径,关于路径 看群里我上传的视频。

@WebServlet("/login")
public class Servlet04 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        String name = req.getParameter("username");
        String pwd = req.getParameter("userpwd");
        if (name.equals("admin")&&pwd.equals("123")){
             req.setAttribute("username",name);
             res.sendRedirect('welcome.jsp')
        }else{
            req.setAttribute("msg","姓名或密码不正确");
            res.sendRedirect('login.jsp')
        }
    }
}

4、实现页面“注册”功能。打开新会员注册页面(如下图所示),进行新会员的注册。用户点击注册按钮,把表单注册信息提交到后台的regServlet,由regServlet获取用户的注册信息,并把注册信息输出到前台页面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kq2FhCXx-1676876020937)(F:\MarkDown\pics\clip_image012.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hxsx3ppe-1676876020938)(F:\MarkDown\pics\clip_image014.jpg)]

提示:对于爱好的复选框(用户可能选多个值)来说可以通过以下方法获得

request.getParameterValues(),参数是控件的name值,方法的返回值是字符串数组。

@WebServlet("/bawang")
public class Servlet07 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String sex = req.getParameter("gender");
        System.out.println("性别: "+sex);
        String hobbies[] = req.getParameterValues("favorite");
        for (int i = 0;i<hobbies.length;i++){
            System.out.print(hobbies[i]+" ");
        }
        String readme = req.getParameter("readme");
        String isAccept=req.getParameter("isAccept");
    }
}

jstl

5、学习c:choose、c:when和c:otherwise标签的使用,完成下列页面功能输入分数判断等级>80优秀; 60到80之间 及格;<60 不及格;其它情况,提示请输入分数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KbH67Kx6-1676876020939)(F:\MarkDown\pics\clip_image016.jpg)]

<c:set var="score" scope="page" value="${param.score}"/>
<c:choose>
    <c:when test="${score>=80}">
       <h2>优秀</h2>
    </c:when>
    <c:when test="${score>60 && score<80}">
       <h2>及格</h2>
    </c:when>
<c:when test="${score<=60}">
       <h2>不及格</h2>
    </c:when>
    <c:otherwise>
        <h2>请输入分数</h2>
    </c:otherwise>
</c:choose>

6、学习c:forEach标签的使用,求1000以内的能同时被3和7整除的数值之和

<c:set var="sum" value="0"/>
<c:forEach var="j" begin="1" end="1000">
    <c:if test="${j%3 = = 0 && j%7 = =0}">
       <c:set var="sum" value="${sum+j }"/>
    </c:if>
</c:forEach>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值