servlet04

  1. 创建表:

    create database blog character set utf8;

    use blog;

    创建用户表

    create table user(id int primary key auto_increment,username varchar(20),password varchar(20))charset=utf8;

    创建博客表

    create table blogs(id int primary key auto_increment,title varchar(100),content text,created bigint,user_id int)charset=utf8;

  2. 创建工程:
    1. 工程名 Blog jar改war
    2. 改错 最长的右键最长的
    3. 关联Tomcat
    4. pom.xml中的jar包信息
    5. 配置文件 jdbc.properties 把里面newdb3改成blog
    6. 创建四个包
    7. 把DBUtils和THUtils从之前工程中赋值到utils包下面
  3. 实现注册功能:
    1. 在webapp目录下创建reg.html页面 里面有form表单提交地址为RegServlet
    2. 创建RegServlet留下doPost 获取参数 把参数封装到User实体类中 创建UserDao并且调用dao里面的reg方法
    3. 实现reg方法
    4. 在Servlet中注册完之后重定向到login.html页面
  4. 实现登录功能:
    1. 创建login.html 类似reg.html form表单地址改成LoginServlet
    2. 创建LoginServlet,留下doPost方法,获取参数,封装到User对象中,创建UserDao并调用dao的login方法,方法返回值为true或false
    3. 实现login方法,如果登录成功返回true反之false
    4. 在Servlet中通过login的返回值决定重定向到什么位置 如果登录失败再次重定向到login登录页面,如果成功重定向到ListServlet.
  5. 实现发布博客
    1. 创建ListServlet 留下doGet方法 通过THUtils显示list.html
    2. 在resources目录下创建list.html页面,页面中添加发布博客超链接 href=send.html
    3. 创建send.html页面 表单提交地址为SendServlet
    4. 创建SendServlet,留下doGet方法 获取传递过来的参数, 为了获取登录的用户id,在LoginServlet中登录成功的时候将登录成功的用户信息保存到Session对象里面,获取完参数之后将session里面保存的用户信息取出, 将多个博客信息封装到Blog对象中创建BlogDao 并调用send方法, 最后重定向到ListServlet列表页面
    5. 实现send方法
  6. 在列表页面显示当前登录的用户名
    1. 在ListServlet里面获取session中保存的用户对象,判断是否登录过,如果没有登录 重定向到登录页面, 如果登录过将得到的user对象保存到context容器中
    2. 在list.html页面中取出容器里面的用户名并显示到页面中
  7. 实现退出登录功能
    1. 创建LogoutServlet,留下doGet方法 方法中删除session中的user对象 重定向到login.html页面
  8. 实现博客列表页面
    1. 在ListServlet中创建BlogDao并调用findAll方法,将返回的集合放进context容器中

    2. 实现findAll方法,需要同时查询blogs表和user表

      select b.*,u.username from blogs b join user u on b.user_id=u.id;

    3. 在list.html页面把context里面的内容显示

  9. 实现删除功能
    1. 在list.html中添加删除的超链接, 在a标签里面添加th:if 属性 满足条件才能显示 连接地址为DelServlet 并且把博客id拼接在后面
    2. 实现DelServlet,留下doGet方法获取传递过来的id,创建BlogDao并调用deleteById的方法把id传递进去 , 最后重定向到列表页面
    3. 实现deleteById方法

文件上传

  • Servlet3.0新增功能, 目前所创建工程默认为Servlet2.5

  • 如何把工程改成Servlet3.0:

    从苍老师文档服务器下载Servlet 3.0 web.xml 得到里面的web.xml 替换掉工程中src/main/webapp/WEB-INF/里面的web.xml

  • 在页面中 form表单里 需要把提交方式改成post 还需要修改编译方式

    <form action="UploadServlet" method="post" 
    		enctype="multipart/form-data">
    		<input type="file" name="pic">
    		<input type="submit"> 
    	</form>
    
  • 创建UploadServlet, 在类声明的位置添加@MultipartConfig注解

//为了实现文件上传
@MultipartConfig
public class UploadServlet extends HttpServlet {
	 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 request.setCharacterEncoding("UTF-8");
		 //获取上传的文件对象
		 Part part = request.getPart("pic");
		 //获取文件名
		 String fileName = part.getSubmittedFileName();
		 //把文件保存到某个磁盘路径
		 part.write("D:/imgs/"+fileName); 
	}
}

Session会话

  • 作用: 通过session对象可以让同一个浏览器发出的多个请求之间建立关系共享同一份数据

"+fileName);
}
}


​		





















### Session会话

- 作用: 通过session对象可以让同一个浏览器发出的多个请求之间建立关系共享同一份数据

  [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTv06sFc-1594194973489)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20200622115451150.png)]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.cn.servlet04; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; @WebServlet("/Cookie03") public class ServleCookie03 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置响应消息体的数据格式 resp.setContentType("text/html;char=utf-8"); //获取cookie Cookie[] cookies = req.getCookies(); //遍历数据 if(cookies != null && cookies.length>0){ for(Cookie c:cookies){ String name = c.getName(); //判断name是否是登录时间的name System.out.println("name"+name); if("time".equals(name)){ String value = c.getValue(); //解码 value = URLDecoder.decode(value,"utf-8"); //有我要的cookie 不是第一次访问 resp.getWriter().write("<h1>欢迎回来</h1>"); } } } if(cookies == null || cookies.length==0){ //第一次访问 Date date = new Date();//获取系统时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String str_date = sdf.format(date); Cookie c = new Cookie("time",str_date); // c.setMaxAge(0); resp.addCookie(c); resp.getWriter().write("欢迎你首次访问"); } } } 为什么网页无法正常显示,给出修改过后的代码
07-13
您提供的代码缺少一些必要的部分,例如导入的包和Servlet的注解信息。此外,您还需要提供更详细的问题描述,以便我能更好地帮助您修改代码。以下是一个基本的修改后的代码示例: ```java package com.cn.servlet04; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Cookie03") public class ServletCookie03 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 设置响应消息体的数据格式 resp.setContentType("text/html;charset=utf-8"); // 获取cookie Cookie[] cookies = req.getCookies(); // 遍历cookie if (cookies != null && cookies.length > 0) { for (Cookie c : cookies) { String name = c.getName(); // 判断name是否是登录时间的name System.out.println("name: " + name); if ("time".equals(name)) { String value = c.getValue(); // 解码 value = URLDecoder.decode(value, "utf-8"); // 有我要的cookie,不是第一次访问 resp.getWriter().write("<h1>欢迎回来</h1>"); } } } if (cookies == null || cookies.length == 0) { // 第一次访问 Date date = new Date();// 获取系统时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String str_date = sdf.format(date); Cookie c = new Cookie("time", URLEncoder.encode(str_date, "utf-8")); // c.setMaxAge(0); resp.addCookie(c); resp.getWriter().write("欢迎你首次访问"); } } } ``` 请注意,以上代码仅仅是一个基本的修改示例,如果您有其他问题或者详细需求,请提供更多的信息,以便我能更好地帮助您。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值