【Java学习-J.160601.0.20】Servlet 基础二
2016-06-10 16:15
447 查看
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任意字符串
相关文章推荐
- spring引入properties文件,并在controller等层获得引入文件中属性的值
- 解决struts 启动过程中出现的 Unable to load configuration错误 3ff8
- Java常用排序算法之堆排序
- Java多线程
- Spring Mvc那点事---(13)Spring Mvc之mybatis多表联合查询
- Java设计模式之抽象工厂模式
- Java多线程 之 Thread子类 join方法(五)
- java基础知识(四)--泛型
- Java 直接插入排序
- spring+springMVC+mybatis的配置文件和包
- java读取excel
- javaweb之框架标签(day1 框架标签的使用)
- java基础2
- Java finally语句到底是在return之前还是之后执行?
- RxJava学习入门
- SpringMVC之MVC的简介(七)
- spring 集成shiro 之 自定义过滤器
- Eclipse常用快捷键总结(必看篇)
- Increasing Java Heap Size — Out of memory error — java -Xmx3000M -Xms1500M -XshowSettings:all
- SpringMVC之MVC模型(六)