javaWeb02

摘要:java学习
你想输入的替代文字

jsp中内置对象
request内置对象

web服务器收到客户端的http请求,会针对每一次请求,分别创建一个代表请求的request对象,和代表响应的response对象
request和response对象表示请求和响应,那我们要获得客户机提交过来数据,只需要request对象就可以,要向客户机输出数据,只需要response对象就行了
request 是HttpServletRequest类型是用于接收用户需求的一个请求体

跳转与转发
redirect方式跳转
<%
//进行跳转
//response.sendRedirect(“RedirectAction.jsp?name=zhangcheng”);
//跳转站外连接
response.sendRedirect(“http://www.baidu.com");
//以上有什么好处,直接可以跳转站外连接,但是地址栏也会跟随变化
%>
forward方式跳转
<%
request.setAttribute(“name”, “zhangcheng”);
RequestDispatcher dispatcher = request.getRequestDispatcher(“RedirectAction.jsp”);
dispatcher.forward(request, response);
//以上有什么好处,地址栏不会变化,但是无法跳出站外,只能在站内跳转
//但是forward跳转方式会把上一个页面的request对象带到跳转后的页面,也就是跳转前和跳转后页面公用一个request对象,根据这个原理,我们如果在跳转页面前向request存储数据,那么跳转后的页面可以从request中取得这些数据
%>

二种跳转方式的区别
URL的变化
redirect跳转后浏览器URL地址栏显示的是跳转后的地址
forward跳转后浏览器URL显示的还是当前地址,没有发生变化
速度上区别
redirect是在客户端上跳转,速度慢
forward跳转是在服务器上跳转,速度快
在对象区别
redirect跳转,上一页和跳转后的页面不共享同一个request
forward跳转,上一个页面和跳转后的页面共享同一个request对象
共享的同一个request对象,则可以使用这个对象进行传值写入数据

Response内置对象
1、页面跳转
redirect方式跳转,使用sendRedirect方式,可以实现页面跳转
//response.sendRedirect(“RedirectAction.jsp?name=zhangcheng”);
2、页面打印
<%
String n = request.getParameter(“name”);
out.print(“getParameter “+n+”
“);
String s = (String)request.getAttribute(“name”);
out.print(“att “+s+”
“);
response.getWriter().println(“HELLO”);
%>
输出是在最后输出的,但是显示页面内容,会最先输出
HttpSession内置对象
1、Session作用
对于某个用户来说,一个全局的数据容器,一个用户有一个Session,不同用户有不同Session,Session中可以存放数据
我们经常使用Session在多个不同的页面之间共享数据
具体应用场景
当用户登陆之后,把用户信息存放在Session中,然后其他页面可以从Seesion中取出用户信息来显示,如果其他页面从Seesion中没有取到用户信息,说明这个用户没有登陆
<%
session.setAttribute(“myname”, “zhangcheng”);
%>
要读取的地方进行获取内容
//根据session获得myname
String n1=(String)session.getAttribute(“myname”);
out.print(“session “+n1);
Application内置对象
<%
//application像是公告栏,针对所有用户有效,在这里存储数据,所有用户都可以获取
application.setAttribute(“application”, “test”);
%>
String a = (String)application.getAttribute(“application”);
out.print(“application “+a);

Jsp中如何定义函数

获取当前时间的函数
<%!
//定义函数
public String getCurrentTime(){
 Date d = new Date();
 DateFormat df = new SimpleDateFormat(“YYYY-MM-dd HH:mm:ss”);
 String strTime = df.format(d);
 return strTime;
}
%>
<%
//调用函数
String s= getCurrentTime();
out.println(“当前系统时间”+s);
%>

使用数据库动态创建我们的选择项目

<%!
public ArrayListqueryAllDept()throws Exception{
 //需要添加mysql驱动包
 Class.forName(“com.mysql.jdbc.Driver”);
 //连接数据库
 String url=”jdbc:mysql://localhost:3306/javaweb?useUnicode=true&characterEncoding=utf-8”;
 String username = “root”;
 String password = “pwd”;
 Connection con = DriverManager.getConnection(url,username,password);
 String sql=”select * from dept”;
 Statement stm = con.createStatement();
 ResultSet rs = stm.executeQuery(sql);
 ArrayList deptlist = new ArrayList<>();
 while(rs.next()){
  int dno =rs.getInt(1);
  String dname = rs.getString(2);
  String deptInfo = dno+”,”+dname;
  deptlist.add(deptInfo);
 }
 rs.close();
 stm.close();
 return deptlist;
}
%>
调用

jsp对数据库的增删改查的操作
进行增加操作


员工编号:
员工姓名:



响应页
<%
//设置格式内容
request.setCharacterEncoding(“utf-8”);
%>
<%
//获得表单提交数据
String empno=request.getParameter(“empno”);
String empname=request.getParameter(“empname”);
Class.forName(“com.mysql.jdbc.Driver”);
//连接数据库
String url=”jdbc:mysql://localhost:3306/javaweb?useUnicode=true&characterEncoding=utf-8”;
String username = “root”;
String password = “xxxx”;
Connection con = DriverManager.getConnection(url,username,password);
//输出页面内容
 out.println(empno+””+empname);
 String sql=”insert into EMP(empno,ename)values(?,?)”;
 PreparedStatement ps = con.prepareStatement(sql);
 ps.setString(1, empno);
 ps.setString(2,empname);
 ps.execute();
 ps.close();
 con.close();
 out.println(“添加成功”);
%>