【Java学习-J.160601.0.20】Servlet 基础二
来源:互联网 发布:接入网络 编辑:程序博客网 时间:2024/06/06 04:39
I、请求提交方式
1、get请求(默认请求)
什么是get请求?会将用户的请求参放置在地址栏中的请求路径后面,不安全并且有大小限制,不适合提交大量数据。
例如:http://localhost:8080/<项目名>/add?name=%E9.....%BF&age=12&salary=888
2、post请求
什么事post请求?会将请求参数防止在数据中,与数据包一起发送到服务器端,这样比较安全,适合大数据提交。
例如:http://localhost:8080/<项目名>/add
在servlet中post请求方式过来的参数以指定的编码进行解析:
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");//将服务器返回的内容以指定的编码进行打包发送至浏览器
II、创建servlet(CURD操作)
1、查询的servlet
//servlet需要继承HttpServlet,并实现service方法public class Listdemo extends HttpServlet{public void service(HttpServletRequest request,HttpServletResponse response){try{response.setContentType("text/html;charset=utf-8");//———以下内容后期进行封装———Connection conn=DBsource.getConnection();//DBsource为数据库连接池解析String sql="select * from user";PreparedStatement stmt=conn.preparedStatement(sql);ResultSet rs=stmt.executeQuery();//后期将对上述的方法进行封装out.println("<table><tr><td>姓名</td><td>年龄</td><td>薪资</td></tr>");whlie(rs.next()){String name=rs.getString(1);String age=rs.getInt(2);String salary=rs.getDouble(3);out.println("<tr><td>"+name+"</td><td>"+age+"</td><td>"+salary+"</td></tr>");}out.println("</table>");out.close();conn.close();stmt.close();rs.close();}}catch( SQL Exception e){e.printStackTrace();}}
2、增加的servlet
public class adddemo extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response){ try{ request.setCharacterEncoding("utf-8");//将获得的数据进行解码</span> String name=request.getParameter("name"); Int age=Integer.parseInt(request.getParameter("age")); Double salary=Double.parseDouble(request.getParameter("salary")); Connection conn=DBsource.getConnection(); String sql="insert into user(name,age,salary)values(?,?,?);" PreparedStatement stmt=conn.preparedStatement(sql); stmt.setString(1,name); stmt.setInt(2,age); stmt.setDouble(3,salary); stmt.executeUpdate(); conn.close(); stmt.close(); }catch( SQL Exception e){ e.printStackTrace(); }
3、删除的servlet
public class dedemo extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response){ try{ response.setContextType("text/html;charset=utf-8");Connection conn=DBsource.getConnection();String sql="delete from user where id=?";PraparedStatement stmt=conn.praparedStatement(sql);stmt.setInt(1,id);stmt.executeUpdate();stmt.close();conn.close();}catch( SQL Exception e){ e.printStackTrace(); }}
4、修改的servlet(修改需要先查询)
查询public class querydemo extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response){ try{ int id=Integer.praseInt(request.getParameter("id"));//根据id查找 response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter(); Connection conn=DBsource.getConnection(); String sql="select * from user where id=?"; PraparedStatement stmt=conn.praparedStatement(sql); stmt.setInt(1,id); ResultSet rs=stmt.executeQuery(); out.println("<form method='post' action='update'>"); out.println("<input type='hidden' name='id' value="+id+"'/>");//隐藏域的值的传递 while(rs.next()){ out.println(rs.getInt()); out.println(rs.getString()); out.println(rs.getInt()); }catch( SQL Exception e){ e.printStackTrace(); } out.println(rs.getDouble()); out.println("</form>"); }修改
public class updatedemo extents HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response){ try{ request.setCharaterEncoding("utf-8"); int id=Integer.parseInt(request.getParameter("id")); String name=request.getParameter("name"); int age= Integer.parseInt(request.getParameter("age")); Double salary=Double.parseDouble(request.getParameter("salary")); Connection conn=DBsource.getConnection(); String sql="update user set name=?,age=?,salary=? where id=?"; PraparedStatement stmt=conn.praparedStatement(sql); stmt.setString(1,name); stmt.setInt(2,age); stmt.setDouble(3,salary); stmt.setInt(4,id); stmt.executeUpdate(); stmt.close(); conn.close(); }catch( SQL Exception e){ e.printStackTrace(); }
III、重定向
语法: response.sendRedirect("list");
什么是重定向
通俗的讲就是自动的页面跳转,服务器在返回给浏览器数据包的同时,会在消息头中返回一个302的状态码,浏览器解析服务器发送来的数据包发现有302的状态码时,会立即向302状态码所指向的地址发送请求。(重定向之前不能有out输出,并且重定向的地址是任意的)。
VI、如何处理请求资源路径
什么是请求资源路径? http://ip:port/appname/modfiy.do?appname/xxxx
1、精准匹配
要求<url-pattern></url-pattern>与/appname后面的路径一致
2、通配符匹配
使用*代表任意字符串
比如:<url-pattern>中使用/*表示任意字符串,/abc/*表示有/abc/的字符串
3、后缀匹配
不能使用/开头,要求*.do任意字符串
- 【Java学习-J.160601.0.20】Servlet 基础二
- 【Java学习-J.160601.0.20】Servlet生命周期
- 【Java学习-J.160601.0.20】Servlet 基础三 dao的封装
- 【Java学习-J.160601.0.20】一个验证码的servlet
- 【Java学习-J.160611.0.21】Servlet基础四 cookie部分
- 【Java学习-J.160611.0.21】Servlet基础四 session部分
- Java Servlet学习二
- 【Java学习-J.160601.0.20】Java 转发与重定向
- Java基础之j简析avax.swing.JOptionPane(二)
- Java Servlet原理学习(二)
- Java基础.J.1
- 【Java学习-J.160328.0.2】笔记1-Linux基础
- 【Java学习-J.160330.0.3】笔记2-Linux基础
- 【Java学习-J.160331.0.4】笔记3-Linux基础
- java基础学习二
- Java基础学习二
- Java Web学习(29): Servlet学习(二)
- Servlet系列(二)----Servlet基础
- 时间复杂度和空间复杂度
- 51nod 1067 Bash游戏 V2 博弈论
- First Step
- 数据库系统概念第十二章 事务
- Google Java Oracle 三角恋的前世今生
- 【Java学习-J.160601.0.20】Servlet 基础二
- 安卓开发(二)ListView显示菜单,SQLite存储和ListView显示
- Arduino 之木马模拟
- 集成JSF
- 【Leetcode】Longest Valid Parentheses
- iOS开发中,在一般的ViewController中使用static cell
- 站内信DB设计实现
- JSP的学习总结
- Android布局控件属性