您的位置:首页 > 编程语言 > Java开发

【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任意字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: