javaweb随身记

Get方式出现乱码解决方法:

  1. 一个一个改 new String (对象.getBaytes(“iso-8859-1”),“utf-8”);每个变量转一次
  2. 修改server.xml 统一gat编码URIEncoding=“UTF-8”

Post方式解决乱码:

  1.  Request.setCharacterEncoding(“utf-8”);

Response 响应对象

Void addCookie(Cookie cookie) 服务端向客户端正价Cookie对象

Void sendRedirect(String location) throws IOException;页面跳转的一种方式

重定向 :response.sendRedirect(“success.jsp”)

请求转发:request.getRequestDispatcher(“”).forword(qequest,response)地址栏不变,数据保留

Void setContetType(String type);设置服务响应的编码,设置服务端的content

 

Cookie (客户端,不是内置对象):由服务端产生,在发送给客户端保存。相当于本地缓存

Cookie cookie = new Cookie(“key”,value);

扫描二维码关注公众号,回复: 5909335 查看本文章

服务端准备Cookie: response.addCookie(Cookie cookie)

页面跳转(页面转发,重定向)

客户端获取Cookie: request.getCookies();  一次性拿到全部Cookie

Cookie cookie = request.getCookies();

For(Cookie cookie:cookies){

  Out.printf(cookie.getName()+cookie.getValue);

}

1.发送Cookie:

String name = request.getParameter("uname");

out.print("欢迎您"+name);

Cookie c = new Cookie("name",name);

Set

response.addCookie(c);

 

request.getRequestDispatcher("show.jsp").forward(request, response);

2.遍历Cookie:

Cookie[] name = request.getCookies();

for(Cookie cookie:name){

if(cookie.getName().equals("name")){

uname = cookie.getValue();

}

}

 

 

内置对象 session:会话

  1. 浏览网页:开始--结束
  2. 购物:浏览、付款、退出

Session机制:

客户端第一次请求服务端时,服务端会自动产生一个session对象(保存客户端的信息);

并且每个session都会有一个唯一的sessionID(用于区分其他session),服务端会产生一个cookie,并且该cookie的name=JSESSIONID,value=服务端sessionID,服务端会在响应客户端的同时将该cookie发送给客户端,至此客户端就有了个cookie(jsessionID),客户端和服务端就可以一一对应。

第n次请求时,服务端会根据客户端cookie中的JSESSIONID,去匹配(判断cookie JSESSIONID 和session sessionID)是否一致。

 

设置Session值:

 <%

  String name = request.getParameter("uname");

String passWord = request.getParameter("pwd");

 

session.setAttribute("name", name);

session.setAttribute("pass", passWord);

request.getRequestDispatcher("Wel.jsp").forward(request,response);

 %>

获取Session值:

 <% 

String Name = (String)session.getAttribute("name");

String Pass = (String)session.getAttribute("pass");

out.print("欢迎您"+Name);

out.print(Pass);

 %>

注销Session:

Session.invalidate( );//session失效

 

内置对象Application.getContextPath()虚拟路径

 

pageContext: set(get)Attribute();只对当前页面有效

Request: 同一次请求有效,请求转发有效,重定向无效

Session 同一次会话有效(切换浏览器无效)

Application:整个项目运行期间有效

*

*

*

*

*

*

JDBC

  1. 导入jar包,加载具体的驱动类。2. 与数据库建立连接。3.发送sql并执行4.处理结果集

private static final String URL="jdbc:mysql://localhost:3306/fooddb?useUnicode=true&setcharacterEncoding=utf-8";

private static final String USERNAME="root";

  1. private static final String PWD="root";

Class.forName("com.mysql.jdbc.Driver");

connection = DriverManager.getConnection(URL,USERNAME,PWD);

stmt = connection.createStatement();

int count = stmt.executeUpdate(sql);

 

PrepareStatement为Statement的子类,建议使用。

  1. 编码简单
  2. 有效避免SQL注入
  3. 比较高效,无需再每次循环执行一次SQL

*

*

*

PrepareCall 设置存储过程:

Cstmt=Conn.prepareCall(“ { call addTwoNum(?,?,?)}”);

Cstmt.setXXX(1,20);

Cstmt.registeroutParameter(3,types.INTGER)

Cstmt.execute();

Cstmt.getXXX(.);

*

*

*

处理CLOB/BLOB类型:

BLOB是按二进制来存储一切文件的,而CLOB是可以直接存储文字TEXT

通过jdbc存储路径,然后根据io操作处理

 

 

 

 

Javabean(就是一个类)的作用:1.减轻jsp的复杂度2.提高了代码的复用(以后任何地方的登录,都可以直接调用logindao)

定义:满足1必须是public修饰的类,public无参构造

2所有属性都是private,并且提供set/get

一共两种,处理数据和处理逻辑

 

MVC设计模型

  1. Model:实现功能,用javabean来实现(dao)
  2. View:表单,表格,js/css/html/js,用于显示与用户进行交互
  3. Controller :分发器  接受请求,将请求转发到模型进行处理;模型处理完成后,再将处理的结果返回请求页。一般用servlet来实现

*

*

*

Servlet3.0 需要编写注解 @WebServlet(“/WebServlet”) 不需要再web.xml

 

/代表的路径  在web.xml中/代表项目根路径 http://localhost:8080/servlet名/

               Jsp中的/代表服务器根路径 http://localhost:8080/

 

 

EL表达式:

点操作符:${requestScope.student.address}

中括号操作符${requestScope[student][address]} 功能更加强大,有以后特殊标点,可以获取变量值入伙不加引号则是变量,可以获取数组元素${requestScope.hobbies[2]}

 

El表达式的隐式对象

A.作用域访问对象:pageScope,requestScope,sessionScope,applicationScope,如果不指定,则会根据默认的顺序,从小到大的顺序,依次取值

B.参数访问对象:获取表单数据(request.getParameter() ${param.uname}、request.getParameterValues()数组${paramValues.hobbies})

C.JSP隐式对象

 PageContext  {$pageContext.request}= pageContext.getRequest()  senssion /response

等价

 

<c:set var=“变量名” value=“变量值” scope=“四个范围对象的作用域”>

<c:set target=“对象” property=“对象的属性” value=“赋值”>

<c:set var="name" value="first" scope="request"/>

<c:out value="${requestScope.nam}" default="不存在" />

 

 

<c:remove var=”” scope=”request”>删除属性

 

EL表达式注意空格

 

过滤器链:可以配置多个过滤器,过滤器的先后顺序是由<filter-mapping>的位置决定

 

监听器

  1. 编写监听器
  2. 配置web.xml

 

猜你喜欢

转载自blog.csdn.net/qq_42183409/article/details/88924624