【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任意字符串




0 0