servlet进阶

Request 作用域
作用域:也就是在某个规定内进行存值,取值,类似于方法的作用域

常规的方法
1.存值:req.setAttribute(“键”,“值”):是以键值对的方式来进行存储,类似于一个Map对象
2.取值: req.gettAttribute(“键”):根据键来获取值
3.删除值:req.removeAttribute(“键”):根据键来进行删除
4.req.getRequestDispatcher(“路径”).forward(req,resp):转发

注意点:
1.转发只有在服务器内部之间转换的才能获取到值
2.req.getParameter(“name值”):这种方式是获取不到req.setAttribute(“键”,“值”) 的值,一般用于获取from表单的值,a标签拼接的参数

ServletConfig (Servlet 的配置)
1.获取servlet的配置信息,用于在当前servlet进行存值、取值

2.获取这个对象:this.getServletConfig();

3.获取值的方法:getInitParameter(“ecoding”):以键值对的形式来获取的

4.config.getInitParameterNames():获取到所有servelt 信息的name值,返回值是 Enumeration,采用迭代器的思维来进行遍历:hasMoreElements() nextElement();

5.config.getServletName():获取到当前servlet的名字

ServletContext 上下文对象(全局配置)
可以进行存取值,作用域比较大,生命周期是随着服务器的开始而创建,服务器销毁,也被销毁,获取到全局的配置

获取当前对象
第一种:this.getServletContext();
第二种:req.getServletContext();

注意:两者获取的都是同一个对象

常规的方法
1.存值:req.setAttribute(“键”,“值”):以键值对的方式来进行存储,就类似于一个Map对象
2.取值: req.gettAttribute(“键”):根据键来获取值
3.删除值:req.removeAttribute(“键”):根据键来进行删除

web.xml设置全局
在web.xml设置全局,获取的方法:getInitParameter(“键名”)
< context-param>
< param-name>键< /param-name>
< param-value>值< /param-value>
< /context-param>

获取键值
1.getInitParameter(“键”):获取单个值,返回:String
2.获取所有的键:getInitParameterNames(); 返回:Enumeration ,采用迭代器的思维来进行遍历:hasMoreElements()、nextElement();

获取服务器的一些配置信息
1.getRealPath("/"); 获取到项目发布到服务器的地址
2.getContextPath(); 获取 到项目名的地址
3.getServerInfo(); 获取服务器的基础信息

servlet 中:doGet、doPost 、service之间的关系:
1.一般请求是get或者post方式,所有调用其实就是 servlet的 doGet() 或者是 doPost()方法
2.service():底层其实就是根据请求方式来调用其相应的方法:doGet() doPost() doPut()

设置编码格式
1.req.setCharacterEncoding(“UTF-8”):设置请求的编码格式
2.resp.setCharacterEncoding(“UTF-8”):设置响应的编码格式
3.resp.setContentType(“text/html;charset=utf-8”):设置响应头的编码格式
4.设置tomcat服务器的编码格式:config/service.xml:获取连接对象后追加:URIEncoding =“utf-8”

针对用户登录、注册、修改用户和删除用户写同一个servlet
前端传递标记,这个标记就是区分执行那个代码块,一张表对应一个实体,一个实体对应一个servlet

@WebServlet(name = “demoServlet”, urlPatterns = “/demoServlet”)
public class DemoServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// from 表单还是可以通过name 来进行获取 (value值不相同)
String flag = req.getParameter(“flag”);
if (“register”.equals(flag)) {
System.out.println(“注册”);
} else if (“login”.equals(flag)) {
System.out.println(“登录”);
}
}
}
重定向
重定向:resp.sendRedirect(“index.jsp”)

特点:
1.使用:resp
2.是在客户端执行、发送两次请求
3. url地址会发生改变
4.一般不适用重定向来携带参数
5.安全性低、效率低
6.增加、删除、修改使用重定向
7.A项目跳转B项目是不能使用转发,必须使用重定向,原因是转发是在服务器内部执行,不会改变地址,A项目跳转到B项目是需要改变地址的

转发
转发:req.getRequestDispatcher(“路径”).forward(req,resp);==>>forward(req,resp):固定的写法(记住要加上)

特点:
1.使用:req
2.在服务器内部执行,发送一次请求
3. url地址不会发生改变
4.转发可以携带参数
5.安全性高 (服务器内部执行) 、效率高
6.查询一般使用转发

上传文件步骤
1.导包(2个),添加依赖
2.form表单提交必须是post请求,enctype=“multipart/form-data” 必须是这个格式来进行提交,加上enctype=“multipart/form-data”
3.得到上传的路径的文件夹:req.getServletContext().getRealPath("/upload"); 进行判断文件夹,不存在就创建:file.mkdirs();
4.判断是否是上传的格式进行上传:ServletFileUpload.isMultipartContent(req);
5.构建其核心对象:
==>>//实例化一个工厂对象
==>>FileItemFactory factory = new DiskFileItemFactory();
==>>//实例化这个核心对象
==>>ServletFileUpload sfu = new ServletFileUpload(factory);
6.获取其条目:parseRequest(req); 返回:List< FileItem>
7.转换为迭代器进行遍历:Iterator< FileItem> ,调用其方法来判断是普通的文本,或者是文件:fileItem.isFormField()
8.fileItem.write(newFile):写文件调用这样一个方法,不管是普通文本,还是是文件,都是用过name值来进行获取的
9.设置编码格式(3个)

Servlet 注解
1.@WebServlet(name = “user1Servlet”,urlPatterns = “/user1Servlet”) ,替换web.xml文件内的配置
2.@WebServlet("/user1Servlet"):默认是按照名字的首字母来进行加载

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值