Servlet进阶-上

Java Web标准结构

Servlet生命周期

1.装载-->读取web.xml中的数据

2.创建-->开始FirstServlet的构造方法

3.初始化-->用于初始化这个Servlet,比如预先读取某个文件的内容

4.提供服务-->开始进行此Servlet类的功能

5.销毁-->对资源进行销毁操作

    public FirstServlet(){
        System.out.println("正在创建FirstServlet...");
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("正在初始化FirstServlet...");
    }

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name=request.getParameter("name");
        System.out.println("返回给浏览器的内容为:"+name);
        response.getWriter().println("<h1>你好! "+name+"</h1>");
    }

    @Override
    public void destroy() {
        System.out.println("正在销毁FirstServlet数据中...");
    }

使用注解配置Servlet

可以直接用

@WebServlet("/pattern")

将Servlet类指定为一个网页

也可以加入/pattern/*  来实现网页的多态

@WebServlet("/pattern/*")
public class PatternServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String requestURI = req.getRequestURI();// URI:/class/875
        String id = requestURI.substring(requestURI.lastIndexOf("/") + 1);
        //lastIndexOf给出的是最后一次出现的索引
        //substring 输入一个索引位.从索引位开始截取,直到字符串最后
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.println("<h1>");
        if (id.equals("100"))
            writer.println("李璇");
        if (id.equals("200"))
            writer.println("聂星宇");
        if (id.equals("300"))
            writer.println("欢迎回家");
        writer.println("<h1>");
    }
}

补充:

URL:http://www.baidu.com/index.html

URI:/index.html

请求的结构 

1.Get与Post方法,分别对应<form>中的get与post.  表单默认提交方法为get,post需要设置.

 2.通过get方式提交的表单,将在网页上显示。 此类表单的数据可以在类中使用doGet方法获取数据

3.通过post方式提交的表单,将在请求体中显示。 此类表单的数据可以在类中使用doPost方法获取数据 

<form action="/login" method="post">
    <input name="username">
    <input name="password" type="password">
    <input type="submit" value="提交">
</form>

响应的结构

 Servlet乱码问题

request.setCharacterEncoding("utf-8");//确保从其他网页得到输入为utf-8
response.setContentType("text/html;charset=utf-8");//确保向其他网页输出为utf-8

Servlet的请求转发与响应重定向

request.getRequestDispatcher("/index").forward(request,response);//请求转发
response.sendRedirect("/index");//响应重定向-->进入的网页需要同时写get和post

1.请求转发是使用的同一个请求对象,而请求是客户端发往服务器的;

2.响应重定向是使用响应对象进行处理,而响应是服务器发往客户端的。

如果没有响应重定向的话,那么如果需要对服务器发往客户端的数据进行业务拦截(使用过滤器或拦截器),那么在技术上是无法实现的。

3.请求转发通常用来进行跳转时携带数据的,这里的跳转可能是servlet到servlet,也能是其他目标。其根本作用是用来携带数据。

4.响应重定向并不是请求,所以不区分get或者post。

5.请求转发产生的网页跳转只能应用于网页内部的跳转,比如百度跳百度,不能用于百度跳微博。 

设置自定义属性

request.setAttribute("name","Li");//属性名,属性值
String name = (String)request.getAttribute("name");//获取属性值

Servlet常用方法

request.getParameter("");//用于接收表单中的单个参数
request.getParameterValues("");//用于接收表单中的多个参数-->checkbox复选项
response.getWriter().println();//用于向浏览器输出HTML页面

request.setCharacterEncoding("utf-8");//确保从其他网页得到输入为utf-8
response.setContentType("text/html;charset=utf-8");//确保向其他网页输出为utf-8

String requestURI = request.getRequestURI();// 得到网页的URI:/pattern/875
requestURI.lastIndexOf("/");//截取网页URI / 符号之后的子字符串
requestURI.substring(1);//截取获得字符串中索引位开始之后的子字符串

request.getRequestDispatcher("/index").forward(request,response);//请求转发
response.sendRedirect("/index");//响应重定向-->进入的网页需要同时写get和post

request.setAttribute("name","Li");//属性名,属性值
String name = (String)request.getAttribute("name");//获取属性值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值