Servlet

servlet

1.servlet创建方式:
1.实现Servlet接口:
void init(ServletConfig var1) throws ServletException;
      
ServletConfig getServletConfig();

void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

String getServletInfo();

 void destroy();
2.继承GenericServlet(适配器模式)
void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
3.继承HttpServlet:可以不写任何方式,具体可以根据不同的请求,来执行对象的doXxx方法
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

        }

 protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

        }
2.Servlet的配置方式:
        //1.web.xml
        <servlet>
            <servlet-name>aaa</servlet-name>
            <servlet-class>com.qfedu.controller.HelloServlet<servlet-class>
        </servlet>

        <servlet-mapping>
            <servlet-name>aaa</servlet>
            <url-pattarn>/aaa</url-pattarn>
        </servlet-mapping>
                
                
      //2.注解@WebServlet
        @WebServlet(urlPattarn='/aaa'public class HelloServlet extends HttpServlet{}
3.Servlet的生命周期
servlet默认是在web容器中是单例模式,
而且服务器启动时并不创建Servlet实例,只有请求发生后才会创建对应的servlet实例
    1 + 3
    构造器

    init
    service
        doGet
        doPost
    destroy
4.Servlet解决中文乱码问题:
    1.  数据库的编码格式必须为utf8
    2.  在jdbc的url中添加characterEncoding=utf8代码
    3.  在每一个Servlet的请求中设置三行代码
        注意这三行代码必须写在request.getParameter()之前,最好放在最前面

        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=UTF-8");
5.servlet的页面跳转方式:
1.请求转发
        request.getRequestDispatcher('目标url').forward(request, response)
        特点:
            1.  客户端与服务器只交互了一次,服务器内部可以实现请求的转发
            2.  地址栏显示的是中间处理的url,不是最后的url
            3.  一般用于数据的传递
            4.  查询一般都使用请求转发方式
2.重定向
        response.sendRedirect('目标url')
        特点:
            1.  客户端与服务器端交互了多次
            2.  地址栏显示的是最终处理的url
            3.  不能用作数据传递
            4.  增删改一般都用重定向方式(可以避免重复提交)
6.下载
  		String str = "1.jpg";
//          获取服务器方指定的web-inf下的uplaod 目录
        String realPath =getServletContext().getRealPath("/WEB-INF/img");
//          设置response的header信息,主要设置文件以附件的方式来存储
        resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(str, "utf-8"));
//          创建一个FileInputStream流对象,将文件来放入流中
        FileInputStream fileInputStream = new FileInputStream(realPath + "/" + str);
//          设置字节缓冲
        byte[] bytes = new byte[1024*4];
        int l = 0;
//          循环读取文件内容
        while ((l=fileInputStream.read(bytes))!=-1){
            resp.getOutputStream().write(bytes,0,l);
        }
        fileInputStream.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值