JAVA-Servlet操纵方法

本文介绍了Web开发中的关键技术和方法,包括如何使用ServletContext进行数据存储、处理HTTP请求与响应、解决中文乱码问题等,并提供了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此篇自用查询

 

存储数据的区域对象
域对象的通用的方法:ServletContext context=getServletContext();获取ServletContext对象
setAtrribute(String name,Object obj);
getAttribute(String name);
removeAttribute(String name);


context.getRealPath(相对于该web应用的相对地址);


此方法对应jsp中的表单name,返回值为String
String username=request.getParameter("username");
String pwd=request.getParameter("pwd");

response响应信息:

相应包返回页面信息
response.getWriter().write("hello dandan...");


重定向
//重定向302+Location
//设置状态吗
response.setStatus(302);
//设置location响应头
response.setHeader("Location", "/web4/Servlets2");
可直接使用:
response.sendRedirect( "/web4/Servlets2");

延迟五秒  跳转:response.setHeader("refresh", "5;url=/web3test/login.jsp");

1)告知浏览器文件的类型:response.setContentType(文件的MIME类型);
2)告示浏览器文件的打开方式是下载:
response.setHeader("Content-Disposition","attachment;filename=文件名称");


同时也内含setCharacterEncoding的功能,所以在实际开发中只要编写    response.setContentType("text/html;charset=UTF-8");就可以解决页面输出中文乱码问题


响应头输出字节
ServletOutputStream  getOutputStream()

解决响应头中中文乱码
path=new String(path.getBytes("ISO-8859-1"),"UTF-8");


//获取头中的agent来辨别客户端是哪个浏览器
        String agent=request.getHeader("User-Agent");
        //赋值讲义内容
        String filenameEncoder="";
        if (agent.contains("MSIE")) {
                // IE浏览器
                filenameEncoder= URLEncoder.encode(path, "utf-8");
                filenameEncoder= filenameEncoder.replace("+", " ");
        } else if (agent.contains("Firefox")) {
                // 火狐浏览器
        BASE64Encoder base64Encoder = new BASE64Encoder();
                filenameEncoder= "=?utf-8?B?"
                        + base64Encoder.encode(path.getBytes("utf-8")) + "?=";
        } else {
                // 其它浏览器
                filenameEncoder= URLEncoder.encode(path, "utf-8");                
        }
//告知浏览器文件类型
response.setContentType(getServletContext().getMimeType(path));
//告知客户端下载不要解析
response.setHeader("Content-Disposition", "attachment;filename="+filenameEncoder);

//明确数据源
String path2=getServletContext().getRealPath("dow/"+path);





request方法:
    获得客户端的请求方式:String getMethod()


    //获取请求资源相关内容
    //地址栏url网络地址
    //访问地址uri
    String responseURI=request.getRequestURI();
    StringBuffer responseURL=request.getRequestURL();
    System.out.println("uri:"+responseURI);
    System.out.println("url:"+responseURL);

    //获取项目名(项目名)
    String webName=request.getContextPath();
    在jsp中的使用方法,${pageContext.request.contextPath}


      解决post提交方式的乱码:request.setCharacterEncoding("UTF-8");
      解决get提交的方式的乱码:parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");


        //获取单个参数值
        String username=request.getParameter("user");
        //获取一name多个值
        String[] hobbys=request.getParameterValues("hobby");



        //获取指定的请求头
        String refer=request.getHeader("Referer");


获取请求头的方法:
String getParameter(String name)
String[] getParameterValues(String name)
Enumeration getParameterNames()
Map<String,String[]> getParameterMap()

 

 

    request.getRequestDispatcher(转发的地址).forward(req,resp);

 

    request.setAttribute(name,value)
    request.getAttribute(name)

在jsp端接收

<%=request.getAttribute("loginInfo") %>

---------------------------------------------------------
引用外部jar ,binutils
        //获取所有参数的map集合
        Map<String,String[]> maps=request.getParameterMap();
        //创建user对象
        users users=new users();
        //使用binutils自动映射封装
        //前提是map中的map中的key必须跟users中的属性名一一对应
        //吧map写到users中
        BeanUtils.populate(users,maps);

转载于:https://www.cnblogs.com/xiaozhang666/p/10624000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值