实验一 Servlet技术

实验一 Servlet技术

一、实验目的:

	1.理解Servlet的工作原理,
	2.掌握创建和发布Servlet的方法,
	3.熟悉Servlet的应用。
	4.掌握维持会话技术,理解cookies与session的区别。

二、实验原理:

  Servlet是Java EE的三大组件技术之一,主要用于MVC模式之中的控制器的设计。Servlet本身是Java程序,创建一个Servlet需要继承Servlet类或GenericServlet类或HttpServlet类,有三个主要的生命周期相关的方法:init()、service()、destroy(),一般会重写,会在service()中自动调用的doGet()和doPost()方法,对采用get方式或post方式提交的请求进行处理响应。
     1、Cookie:Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
     2、Session:Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

三、实验内容:

		一、熟悉web.xml文件中与servle的相关的部分。
		二、应用servlet处理用户的表单。
		三、使用cookie技术使用户在二周内免登录
		四、应用session制作虚拟购物车。

四、实验步骤:

一、应用servlet处理用户的表单

    1、新建立一个web应用程序
	2、在应用程序中,建立一个regist.html文档。
	3、在HTML文档中编写一个表单,表单的元素有:用户名(单行文本框)、密码、密码确认、姓名(单选)、兴趣爱好(多选)以及个人描述(多行文本)。
    4、新建立一个servlet,用该servlet接收用户在regist.html表单中输入的信息,并显示。
源代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/show" method="post">
    用户名:<input type="text" name="name"/><br>
    密  码:<input type="password" name="password"/><br>
    性  别: <input type="radio" name="sex" value="boy" />男<br>
            <input type="radio" name="sex"  value="girl"/>女<br>
    密码确认:<input type="passwordagain" name="passwordagain"/><br>
    兴趣爱好:
       <input name="fav" type="checkbox" value="sing">唱歌<br>
       <input name="fav" type="checkbox" value="dance">跳舞<br>
       <input name="fav" type="checkbox" value="ball">打球<br>
       <input name="fav" type="checkbox" value="game">打游戏<br>
    <input type="submit" value="提交"/>
    <input type="reset" value="重置"/>
</form>

</body>
</html>
package edu.xalead;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class showServlet extends HttpServlet {
    

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        String name = request.getParameter("name");
        String password = request.getParameter("password");
        String sex = request.getParameter("sex");
        String[] fav = request.getParameterValues("fav");

        PrintWriter pw = response.getWriter();

        pw.print("<html><body>");
        pw.print("<br>表单提交到servlet的数据如下:<br>");
        pw.print("姓名:" + name + "<br>"  );
        pw.print("密码:" + password + "<br>");
        pw.print("性别:"+ sex+ "<br>" );
        pw.print( "爱好:"+ Arrays.asList(fav)+"<br>" );
        pw.print("</body></html>");



    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        this.doPost(request, response);
        

    }
} 

二、使用cookie技术使用户在二周内免登录


(1)新建一个login.jsp页面,制作一个表单,包含用户名和密码框登录按钮以及一个在二周内无需登录的选择框。该页面检查cookies中是否存在名为user的项,如果存在,则不显示登录表,并跳到hello.jsp页面。
(2)将登录的表单交由一个servlet来处理,这个servlet收集用户名和密码,并向客户端发送cookie。注意设置cookie的有效周期为2周。
源代码:
<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2019/10/26
  Time: 17:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login.jsp</title>
</head>
<body>
<h2>登录</h2>

<%
    //首先检查
    Cookie[] cookies = request.getCookies();
    String name = "";
    String password = "";
    if (cookies != null && cookies.length != 0) {
        for (int i = 0; i < cookies.length; i++) {
            if (cookies[i] != null) {
                if (cookies[i].getName().equals("name")) {
                    name = cookies[i].getValue();
                }
            }
            if (cookies[i] != null) {
                if (cookies[i].getName().equals("password")) {
                    password = cookies[i].getValue();
                }
            }
        }
    }
    if (!name.equals("") && !(password.equals(""))
            && name.equals("user")) {
        request.getRequestDispatcher("/hello.jsp").forward(request,response);
    } else {
%>

<form action="/cookie" method="post">
  用户名:<input type="text" name="name" /><br>
    密码:<input type="password" name="password" /><br>
    是否保存两个周免登陆状态:
    <%--<input type="checkbox" name="keep">两个周免登陆<br>--%>
    <input type="radio" name="saveLoginState" value="1" checked="checked">是
    <input type="radio" name="saveLoginState" value="0">否<br>
    <input type="submit" value="登录">
</form>
 <%
     }
 %>
<%
    Cookie[] cookie = request.getCookies();
    if(cookie!=null){
        for(int i=0;i<cookie.length;i++){
            if(cookie[i].getName().equals("user")){
                request.getRequestDispatcher("hello.jsp");
            }
        }
    }


%>

</body>
</html>

package edu.xalead;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletCookie extends HttpServlet {

    protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        /*String name = request.getParameter("name");
        String passowrd = request.getParameter("password");*/
        /*Cookie cookie1 = new Cookie("name", "name");
        Cookie cookie2 = new Cookie("password", "password");
        cookie1.setMaxAge(1209600);
        cookie2.setMaxAge(1209600);
        response.addCookie(cookie1);
        response.addCookie(cookie2);*/
        /*System.out.println(name + ":" + passowrd);*/


        String name = request.getParameter("name");
        String passowrd = request.getParameter("password");
        String saveLoginState = request.getParameter("saveLoginState");

        if (name != null && !(name.equals("")) && passowrd != null
                && !(passowrd.equals(""))) {
            //若用户选择
            if (saveLoginState != null && saveLoginState.equals("1")) {
                Cookie cookie1 = new Cookie("name", name);
                cookie1.setMaxAge(1209600);
                response.addCookie(cookie1);
                Cookie cookie2 = new Cookie("password", passowrd);
                cookie2.setMaxAge(1209600);
                response.addCookie(cookie2);

            }

            response.getWriter().println(name + " :" + passowrd);
        } else {
            response.sendRedirect("login.jsp");
        }


    }
    }

三、应用session制作虚拟购物车。

(自行设计一个购物车,用户在不同页面跳转,并选定不同商品时,存储在一个数据结构中,并作为session中的一个attribute中暂存于session中,用户退出或结算时清除该购物车。无需连接数据库。要求有简单的数量选择。)
<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2019/10/23
  Time: 11:00
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<p> 这里是网上商城,选择您需要的商品添加到购物车 :

<form action="/addcar" method="post" name="form">
    <select name="item" value="未选择">
        <option value="TV" />电视机
        <option value="apple"/>苹果
        <option value="coke"/>可口可乐
        <option value="milk"/>牛奶
        <option value="tea"/>茶叶
    </select>
    <select name="item" value="未选择">
        <option value="铅笔" />铅笔
        <option value="港币"/>港币
        <option value="素描纸"/>素描纸
        <option value="橡皮"/>橡皮
        <option value="壁纸"/>壁纸
    </select>
    <select name="item" value="未选择">
        <option value="茶壶" />茶壶
        <option value="靴子"/>靴子
        <option value="袜子"/>袜子
        <option value="酸奶"/>酸奶
        <option value="糖果"/>糖果
    </select>


<p>输入购买的数量:
    <input type="text" name ="mount">
<p>选择计量单位:
    <input type="radio" name="unit" value="个">个
    <input type="radio" name="unit" value="公斤">公斤
    <input type="radio" name="unit" value="台">台
    <input type="radio" name="unit" value="瓶">瓶
    <input type="radio" name="unit" value="部">部
    <input type="radio" name="unit" value="支">支
    <input type="radio" name="unit" value="张">张
    <input type="radio" name="unit" value="双">双
    <input type="radio" name="unit" value="把">把

    <input type="submit" value="添加提交">
    <input type="reset" value="重设">
</p>
</form>
    <hr>
<a href="shopping2.jsp">其它物品</a>
<a href="remove.jsp">删除商品</a>


</p>

</body>

</html>

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2019/10/26
  Time: 18:36
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/addcar" method="post" name="form">
    <select name="item" value="未选择">
        <option value="phone" />手机
        <option value="computer"/>电脑
        <option value="t-shitr"/>T恤
        <option value="chopsticks"/>筷子
        <option value="noodle"/>面条
    </select>


    <p>输入购买的数量:
        <input type="text" name ="mount">
    <p>选择计量单位:
        <input type="radio" name="unit" value="部">部
        <input type="radio" name="unit" value="台">台
        <input type="radio" name="unit" value="件">件
        <input type="radio" name="unit" value="双">双
        <input type="radio" name="unit" value="把">把
        <input type="submit" value="添加提交">
        <input type="reset" value="重设">
    </p>
</form>

</body>
</html>

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2019/10/23
  Time: 11:33
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<p> 选择要从购物车中删除的商品:
<form action="/removegoods" method="post" name="form">
    <select name="item" value="未选择">
        <option value="TV" />电视机
        <option value="apple"/>苹果
        <option value="coke"/>可口可乐
        <option value="milk"/>牛奶
        <option value="tea"/>茶叶
    </select>
    <select name="item" value="未选择">
        <option value="phone" />手机
        <option value="computer"/>电脑
        <option value="t-shitr"/>T恤
        <option value="chopsticks"/>筷子
        <option value="noodle"/>面条
    </select>
    <input type="submit" value="提交删除">

</form>
</body>
</html>

package edu.xalead;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

public class AddCarServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        response.setCharacterEncoding("utf-8");
        request.setCharacterEncoding("utf-8");
        PrintWriter pw = response.getWriter();
        pw.println("<html>");
        pw.println("<body>");
        HttpSession session = request.getSession(true);
        String  item = request.getParameter("item"),
                mount = request.getParameter("mount"),
                unit = request.getParameter("unit");
        String str = "Name:" +item+ "   Mount:" + mount + "   Unit:" + unit;

        session.setAttribute(item,str);
        pw.println("goods in your car :");
        Enumeration e = session.getAttributeNames();
        while(e.hasMoreElements()){
            String name = (String) e.nextElement();
            pw.println("<br>" + session.getAttribute(name));
        }

        pw.println("</body>");
        pw.println("</html>");

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        this.doPost(request,response);
    }
}
package edu.xalead;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

public class RemoveGoodsServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        response.setCharacterEncoding("utf-8");
        PrintWriter pw = response.getWriter();
        pw.println("<html>");
        pw.println("<body>");
        HttpSession session = request.getSession(true);
        String item = request.getParameter("item");
        session.removeAttribute(item);
        pw.println("<h3>Now goods in your car :</h3>");
        Enumeration e= session.getAttributeNames();

        while(e.hasMoreElements()){
            String name = (String) e.nextElement();
            pw.println("<br>" + session.getAttribute(name));
        }
        pw.println("</body>");
        pw.println("</html>");

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        this.doPost(request,response);
    }
}
发布了101 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/TONGZONGE/article/details/104069787