1201 servlet相关练习

1.get post 请求
根据请求参数返回不同的页面
*    http://ip:prot/server?opt=a 返回HTML文件 opt=b 返回图片 opt=c 返回text
*    post 注册 name phone sex salary job 返回HTML 提示添加完成消息

TestServlet.java

package com.yq.servlet;
/*
* 1. get post 请求
*    根据请求参数返回不同的页面
*    http://ip:prot/server?opt=a 返回HTML文件 opt=b 返回图片 opt=c 返回text
*    post 注册 name phone sex salary job 返回HTML 提示添加完成消息
* */
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

@WebServlet(urlPatterns = "/test")
public class TestServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置响应类型 text/plain文本响应 image/jpg图片响应 application/xml xml响应 text/HTML HTML响应
        String opt = req.getParameter("opt");
        System.out.println("opt = "+opt);
        if(opt.equals("a")){
            resp.setContentType("text/html");
            resp.setCharacterEncoding("UTF-8");
            PrintWriter writer = resp.getWriter();// 字符流
            writer.println("<p>返回HTML文件</p>");
            writer.close();

        }else if(opt.equals("b")){
            resp.setContentType("image/jpg");
            ServletOutputStream out = resp.getOutputStream();// 字节流
            //获取图片输入流
            InputStream in = getServletContext().getResourceAsStream("images/1.jpg");
            byte[] data = new byte[4096];
            int len;
            while((len = in.read(data)) != -1){
                out.write(data,0,len);
            }
            out.close();
            in.close();
        }else if(opt.equals("c")){
            resp.setContentType("text/plain");
            resp.setCharacterEncoding("UTF-8");
            PrintWriter writer = resp.getWriter();// 字符流
            writer.println("<p>返回text文件</p>");
            writer.close();
        }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPost 处理Post请求");
        String name = req.getParameter("name");
        String phone = req.getParameter("phone");
        String sex = req.getParameter("sex");
        String salary = req.getParameter("salary");
        String job = req.getParameter("job");
        System.out.println("doPost处理post请求 " + name+", "+ phone+", "+ sex+", "+ salary+", "+ job);
        resp.setContentType("text/html");
        resp.setCharacterEncoding("UTF-8");
        PrintWriter writer = resp.getWriter();// 字符流
        writer.println("<p>添加完成消息</p>");
        writer.close();
    }
}

test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="test">
    <p>opt<input type="text" name="opt"></p>
    <p>
        <input type="submit" value="get请求" onclick="this.form.method='GET'">
        <input type="submit" value="post请求" onclick="this.form.method='POST'">

    </p>

    <p>姓名<input type="text" name="name"></p>
    <p>电话<input type="text" name="phone"></p>
    <p>性别<input checked="checked" name="sex" type="radio" value="男">男
        <input checked="checked" name="sex" type="radio" value="女">女</p>
    <p>工资<input type="text" name="salary"></p>
    <p>
        <select name="job">
            <option value="经理">经理</option>
            <option value="收银">收银</option>
            <option value="前台">前台</option>
            <option value="保洁">保洁</option>
        </select>
    </p>
    <p>
        <input type="submit" value="post请求" onclick="this.form.method='POST'">
    </p>
</form>

</body>
</html>
2.转发 重定向
*http://ip:prot/hand?forward=a 转发HTML文件 forwar=b 进入淘宝网站

 TestServlet2.java

package com.yq.servlet;
/*转发 重定向
*http://ip:prot/hand?forward=a 转发HTML文件 forwar=b 进入京东网站
* */
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

@WebServlet(urlPatterns = "/test2")
public class TestServlet2 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置响应类型 text/plain文本响应 image/jpg图片响应 application/xml xml响应 text/HTML HTML响应
        String forwar = req.getParameter("forwar");
        System.out.println("forwar = "+forwar);
        if(forwar.equals("a")){
            req.getRequestDispatcher("/message.html").forward(req, resp);

        }else if(forwar.equals("b")){
            resp.sendRedirect("https://www.taobao.com/");
        }

    }

}

test2.html 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<hr>
<form action="test2">
    <p>opt<input type="text" name="forwar"></p>
    <p>
        <input type="submit" value="按钮 " onclick="this.form.method='GET'">
    </p>
</form>
</body>
</html>

3. 配置参数 初始化参数 username获取初始化参数输出

TestServlet3.java

package com.yq.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/*配置参数 初始化参数 username获取初始化参数输出*/
@WebServlet(urlPatterns = "/test3")
public class TestServlet3 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("UTF-8");
        resp.getWriter().println("username初始化参数"+getServletContext().getInitParameter("username"));
    }
}

test3.html 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<hr>
<form action="test3">
    <p><button>初始化参数</button></p>
</form>
</body>
</html>

web.xml 

<servlet>
        <servlet-name>TestServlet3</servlet-name>
        <servlet-class>com.yq.servlet.TestServlet3</servlet-class>
        <init-param>
            <param-name>username</param-name>
            <param-value>Tony</param-value>
        </init-param>
    </servlet>

 4.异常处理 出现异常转入提示页面

 test4.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<hr>

<form action="test4">
    <h3>资源异常</h3>
    <p><a href="message.html">异常</a></p>
</form>
</body>
</html>

message.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h3> message 页面 </h3>
<hr>

<form>
    <h3>出现异常</h3>
    <h5>资源找不到喽......</h5>
</form>

</body>
</html>

web.xml

<error-page>
        <error-code>500</error-code>
        <location>/message.html</location>
    </error-page>
    <error-page>
        <error-code>405</error-code>
        <location>/message.html</location>
    </error-page>
    <error-page>
        <error-code>400</error-code>
        <location>/message.html</location>
    </error-page>
    <error-page>
        <error-code>505</error-code>
        <location>/message.html</location>
    </error-page>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值