• 欢迎光临~

JSP_Homework_10_0518

开发技术 开发技术 2022-05-22 次浏览

1.实现 删除 回复邮件
2.实现阅读邮件功能:在main.jsp中点击任意邮件的标题,进入到detail.jsp显示邮件详情,包括发件人,主题,内容,时间。同时需要把邮件状态修改为已读。

 

大概就是在上次作业的基础上加了增删改

使用技术 SSM框架

..

 

controller层

package com.cotomi.controller;

import com.cotomi.entity.Email;
import com.cotomi.entity.Users;
import com.cotomi.service.EmailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.List;

/**
 * @ClassName EmailController
 * @Date 2022/5/11 22:07
 * @Author 音无彩名
 * @Description TODO
 */
@Controller
@RequestMapping("/email")
public class EmailController {
    @Autowired
    EmailService emailService;

    @RequestMapping("/main")
    public String main(HttpServletRequest request){
        HttpSession session = request.getSession(false);
        Users users = (Users) session.getAttribute("user");
        List<Email> allEmail = emailService.getAllEmailByFromAndTo(users.getuUsername());
        request.setAttribute("allEmail", allEmail);
        return "main";
    }

    @RequestMapping("/detail")
    public String detail(HttpServletRequest request){
        String eid = request.getParameter("eid");
        emailService.updateStatusByEid(eid);
        Email email = emailService.getEmailByEid(eid);
        request.setAttribute("email", email);
        return "detail";
    }

    @RequestMapping("delete")
    public String delete(@RequestParam("eid")
                         String eid, HttpServletRequest request){
        if (emailService.deleteEmailByEid(eid) == 1){
            return "redirect:/email/main";
        }else {
            request.setAttribute("msg","删除异常");
            return "error";
        }
    }

    @RequestMapping("reply")
    public String reply(
            @RequestParam("eFrom")
            String eFrom, HttpServletRequest request){
        request.setAttribute("eTo", eFrom);
        return "addEmail";
    }

    @RequestMapping("addEmail")
    public String addEmail(Email email){
        email.seteStatus("未读");
        email.seteDatetime(new Date());
        emailService.addEmail(email);
        return "redirect:/email/main";
    }
}

 

package com.cotomi.controller;

import com.cotomi.entity.Users;
import com.cotomi.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * @ClassName UsersController
 * @Date 2022/5/11 21:08
 * @Author 音无彩名
 * @Description TODO
 */
@Controller
@RequestMapping("/users")
public class UsersController {
    @Autowired
    UsersService usersService;

    @RequestMapping("/inlogin")
    public String inLogin(){
        return "inLogin";
    }

    @RequestMapping("/main")
    public String main(){
        return "main";
    }

    @RequestMapping("/login")
    public String login(String username, String password, HttpServletRequest request){
        HttpSession session = request.getSession();
        Users user = usersService.login(username, password);
        if (user == null){
            request.setAttribute("msg","用户名或密码错误");
            return "inLogin";
        }
        session.setAttribute("user",user);
        return "redirect:/email/main";
    }

    @RequestMapping("/inregister")
    public String inRegister(){
        return "inRegister";
    }

    @RequestMapping("/register")
    public String register(String username, String password, HttpServletRequest request){
        int success = usersService.register(new Users(username, password));
        if (success == 1){
            request.setAttribute("msg", "注册成功,请登录");
            return "inLogin";
        }else {
            request.setAttribute("msg", "注册失败,未知异常");
            return "inRegister";
        }
    }
}

 

interceptor拦截器

package com.cotomi.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @ClassName LoginInterceptor
 * @Date 2022/5/11 21:17
 * @Author 音无彩名
 * @Description TODO
 */
public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession(false);
        if (session == null || session.getAttribute("user") == null){
            request.setAttribute("msg","请先登录哦");
            request.getRequestDispatcher("/WEB-INF/jsp/inLogin.jsp").forward(request,response);
            return false;
        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}

 

service层

package com.cotomi.service;

import com.cotomi.entity.Email;

import java.util.List;

/**
 * @ClassName EmailMapper
 * @Date 2022/5/11 19:42
 * @Author 音无彩名
 * @Description TODO
 */
public interface EmailService{
    List<Email> getAllEmailByFromUsername(String fromUsername);
    List<Email> getAllEmailByToUsername(String toUsername);
    List<Email> getAllEmailByFromAndTo(String username);
    Email getEmailByEid(String eid);
    int deleteEmailByEid(String eid);
    int addEmail(Email email);
    int updateStatusByEid(String eid);
}

 

package com.cotomi.service;

import com.cotomi.entity.Users;
import org.apache.ibatis.annotations.Param;

/**
 * @ClassName UsersServiceImpl
 * @Date 2022/5/11 18:12
 * @Author 音无彩名
 * @Description TODO
 */
public interface UsersService {
    Users login(String username, String password);

    int register(Users users);
}

 

package com.cotomi.service.impl;

import com.cotomi.entity.Email;
import com.cotomi.mapper.EmailMapper;
import com.cotomi.service.EmailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @ClassName EmailServiceImpl
 * @Date 2022/5/11 19:46
 * @Author 音无彩名
 * @Description TODO
 */
@Service
public class EmailServiceImpl implements EmailService {
    @Autowired
    EmailMapper emailMapper;

    @Override
    public List<Email> getAllEmailByFromUsername(String fromUsername) {
        return emailMapper.getAllEmailByFromUsername(fromUsername);
    }

    @Override
    public List<Email> getAllEmailByToUsername(String toUsername) {
        return emailMapper.getAllEmailByToUsername(toUsername);
    }

    @Override
    public List<Email> getAllEmailByFromAndTo(String username) {
        List<Email> username1 = emailMapper.getAllEmailByToUsername(username);
        List<Email> username2 = emailMapper.getAllEmailByFromUsername(username);
        username1.addAll(username2);
        return username1;
    }

    @Override
    public Email getEmailByEid(String eid) {
        Email email = emailMapper.getEmailByEid(eid);
        return email;
    }

    @Override
    public int deleteEmailByEid(String eid) {
        int i = emailMapper.deleteEmailByEid(eid);
        return i;
    }

    @Override
    public int addEmail(Email email) {
        int i = emailMapper.addEmail(email);
        return i;
    }

    @Override
    public int updateStatusByEid(String eid) {
        int i = emailMapper.updateStatusByEid(eid);
        return i;
    }
}

 

package com.cotomi.service.impl;

import com.cotomi.entity.Users;
import com.cotomi.mapper.UsersMapper;
import com.cotomi.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @ClassName UsersServiceImpl
 * @Date 2022/5/11 18:11
 * @Author 音无彩名
 * @Description TODO
 */
@Service
public class UsersServiceImpl implements UsersService {
    @Autowired
    UsersMapper usersMapper;


    @Override
    public Users login(String username, String password) {
        return usersMapper.login(username, password);
    }

    @Override
    public int register(Users users) {
        return usersMapper.register(users);
    }
}

 

mapper层

package com.cotomi.mapper;

import com.cotomi.entity.Email;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName EmailMapper
 * @Date 2022/5/11 17:44
 * @Author 音无彩名
 * @Description TODO
 */
public interface EmailMapper {
/**
 * @MethodName: getAllEmailByFromUsername
 * @Description: 通过发件人用户名获取该用户发送的所有邮件
 * @Author: 音无彩名
 * @Date: 2022/5/11 19:15
 * @param fromUsername: 发件人姓名
 * @return java.util.List<com.cotomi.entity.Email>
 */
    List<Email> getAllEmailByFromUsername(
            @Param("fromUsername")
            String fromUsername);

    /**
     * @MethodName: getAllEmailByToUsername
     * @Description: 通过收件人用户名字获取该用户发送的所有邮件
     * @Author: 音无彩名
     * @Date: 2022/5/11 19:22
     * @param toUsername: 收件人姓名
     * @return java.util.List<com.cotomi.entity.Email>
     */
    List<Email> getAllEmailByToUsername(
            @Param("toUsername")
            String toUsername);
    /**
     * @MethodName: getEmailByEid
     * @Description: 通过邮件id获取该邮件详细信息
     * @Author: 音无彩名
     * @Date: 2022/5/21 22:54
     * @param eid: 邮件id
     * @return com.cotomi.entity.Email
     */
    Email getEmailByEid(
            @Param("eid")
            String eid);
    /**
     * @MethodName: deleteEmailByEid
     * @Description: 通过邮件id删除该邮件
     * @Author: 音无彩名
     * @Date: 2022/5/21 23:46
     * @param eid: 邮件id
     * @return int
     */
    int deleteEmailByEid(
            @Param("eid")
            String eid);
    /**
     * @MethodName: addEmail
     * @Description: 向邮件数据添加一个新的邮件
     * @Author: 音无彩名
     * @Date: 2022/5/22 1:17
     * @param email: 邮件实体类
     * @return int 成功条数
     */
    int addEmail(Email email);

/**
 * @MethodName: updateStatusByEid
 * @Description: 通过邮件id修改邮件状态
 * @Author: 音无彩名
 * @Date: 2022/5/22 1:44
 * @param eid: 邮件id
 * @return int
 */
    int updateStatusByEid(
            @Param("eid")
            String eid);
}

 

package com.cotomi.mapper;

import com.cotomi.entity.Users;
import org.apache.ibatis.annotations.Param;

/**
 * @ClassName UsersMapper
 * @Date 2022/5/11 17:44
 * @Author 音无彩名
 * @Description TODO
 */
public interface UsersMapper {
    Users login(
            @Param("username")
            String username,
            @Param("password")
            String password);

    int register(
            @Param("users")
            Users users);
}

 

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cotomi.mapper.EmailMapper">

<!--
  private Integer eid;
  private String eFrom;
  private String eTo;
  private String eTitle;
  private String eContent;
  private java.sql.Timestamp eDatetime;
  private String eStatus;-->
    <resultMap id="emailMapper" type="email">
        <id property="eid" column="eid"></id>
        <result property="eFrom" column="e_from"></result>
        <result property="eTo" column="e_to"></result>
        <result property="eTitle" column="e_title"></result>
        <result property="eContent" column="e_content"></result>
        <result property="eDatetime" column="e_datetime"></result>
        <result property="eStatus" column="e_status"></result>
    </resultMap>
    <sql id="allColumn">
        eid, e_from, e_to, e_title, e_content, e_datetime, e_status
    </sql>
    <sql id="allColumnNoId">
        e_from, e_to, e_title, e_content, e_datetime, e_status
    </sql>
<!--    List<Email> getAllEmailByFromUsername(
            @Param("fromUsername")
            String fromUsername);-->
    <select id="getAllEmailByFromUsername" parameterType="string" resultMap="emailMapper">
        select <include refid="allColumn"></include> from email where e_from = #{fromUsername}
    </select>

<!--        List<Email> getAllEmailByToUsername(
            @Param("toUsername")
            String toUsername);-->
    <select id="getAllEmailByToUsername" parameterType="string" resultMap="emailMapper">
        select <include refid="allColumn"></include> from email where e_to = #{toUsername}
    </select>

<!--      Email getEmailByEid(
            @Param("eid")
            String eid);-->
    <select id="getEmailByEid" parameterType="string" resultMap="emailMapper">
        select <include refid="allColumn"></include> from email where eid = #{eid}
    </select>
<!--        int deleteEmailByEid(
            @Param("eid")
            String eid);-->
    <delete id="deleteEmailByEid" parameterType="string">
        delete from email where eid = #{eid}
    </delete>
<!--    int addEmail(Email email);
  private Integer eid;
  private String eFrom;
  private String eTo;
  private String eTitle;
  private String eContent;
  private Date eDatetime;
  private String eStatus;
-->
    <insert id="addEmail" parameterType="email">
        insert into email (<include refid="allColumnNoId"></include>) values (#{eFrom}, #{eTo},#{eTitle},#{eContent},#{eDatetime},#{eStatus})
    </insert>
<!--        int updateStatusByEid(
            @Param("eid")
            String eid);-->
    <update id="updateStatusByEid" parameterType="string">
        update email set e_status = '已读' where eid = #{eid}
    </update>
</mapper>

 

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cotomi.mapper.UsersMapper">
<!--
  private Integer uid;
  private String uUsername;
  private String uPassword;
-->
    <resultMap id="usersMapper" type="users">
        <id property="uid" column="uid"></id>
        <result property="uUsername" column="u_username"></result>
        <result property="uPassword" column="u_password"></result>
    </resultMap>

    <sql id="allColumn">
        uid, u_username, u_password
    </sql>
    <sql id="allColumnNoId">
        u_username, u_password
    </sql>
<!--        Users login(
            @Param("username")
            String username,
            @Param("password")
            String password);-->
    <select id="login" resultMap="usersMapper">
        select <include refid="allColumn"></include> from users where u_username = #{username} and u_password = #{password}
    </select>

<!--        int register(
            @Param("users")
            Users users);-->
    <insert id="register">
        insert into users (<include refid="allColumnNoId"></include>) values (#{users.uUsername},#{users.uPassword})
    </insert>
</mapper>

 

实体类

 

package com.cotomi.entity;


import java.util.Date;


public class Email {

  private Integer eid;
  private String eFrom;
  private String eTo;
  private String eTitle;
  private String eContent;
  private Date eDatetime;
  private String eStatus;


  public Email() {
  }

  public Email(Integer eid, String eFrom, String eTo, String eTitle, String eContent, Date eDatetime, String eStatus) {
    this.eid = eid;
    this.eFrom = eFrom;
    this.eTo = eTo;
    this.eTitle = eTitle;
    this.eContent = eContent;
    this.eDatetime = eDatetime;
    this.eStatus = eStatus;
  }

  public Email(String eFrom, String eTo, String eTitle, String eContent, Date eDatetime, String eStatus) {
    this.eFrom = eFrom;
    this.eTo = eTo;
    this.eTitle = eTitle;
    this.eContent = eContent;
    this.eDatetime = eDatetime;
    this.eStatus = eStatus;
  }

  public Integer getEid() {
    return eid;
  }

  public void setEid(Integer eid) {
    this.eid = eid;
  }

  public String geteFrom() {
    return eFrom;
  }

  public void seteFrom(String eFrom) {
    this.eFrom = eFrom;
  }

  public String geteTo() {
    return eTo;
  }

  public void seteTo(String eTo) {
    this.eTo = eTo;
  }

  public String geteTitle() {
    return eTitle;
  }

  public void seteTitle(String eTitle) {
    this.eTitle = eTitle;
  }

  public String geteContent() {
    return eContent;
  }

  public void seteContent(String eContent) {
    this.eContent = eContent;
  }

  public Date geteDatetime() {
    return eDatetime;
  }

  public void seteDatetime(Date eDatetime) {
    this.eDatetime = eDatetime;
  }

  public String geteStatus() {
    return eStatus;
  }

  public void seteStatus(String eStatus) {
    this.eStatus = eStatus;
  }

  @Override
  public String toString() {
    return "Email{" +
            "eid=" + eid +
            ", eFrom='" + eFrom + ''' +
            ", eTo='" + eTo + ''' +
            ", eTitle='" + eTitle + ''' +
            ", eContent='" + eContent + ''' +
            ", eDatetime=" + eDatetime +
            ", eStatus='" + eStatus + ''' +
            '}';
  }
}

 

package com.cotomi.entity;


public class Users {

  private Integer uid;
  private String uUsername;
  private String uPassword;

  public Users() {
  }

  public Users(Integer uid, String uUsername, String uPassword) {
    this.uid = uid;
    this.uUsername = uUsername;
    this.uPassword = uPassword;
  }

  public Users(String uUsername, String uPassword) {
    this.uUsername = uUsername;
    this.uPassword = uPassword;
  }

  public Integer getUid() {
    return uid;
  }

  public void setUid(Integer uid) {
    this.uid = uid;
  }

  public String getuUsername() {
    return uUsername;
  }

  public void setuUsername(String uUsername) {
    this.uUsername = uUsername;
  }

  public String getuPassword() {
    return uPassword;
  }

  public void setuPassword(String uPassword) {
    this.uPassword = uPassword;
  }

  @Override
  public String toString() {
    return "Users{" +
            "uid=" + uid +
            ", uUsername='" + uUsername + ''' +
            ", uPassword='" + uPassword + ''' +
            '}';
  }
}

 

spring与springMVC配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:SqlMapConfig.xml"></property>
        <property name="typeAliasesPackage" value="com.cotomi.entity"></property>
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.cotomi.mapper"></property>
    </bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">
    <context:component-scan base-package="com.cotomi.service.impl"></context:component-scan>
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <tx:advice id="myadvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*select*" read-only="true"/>
            <tx:method name="*find*" read-only="true"/>
            <tx:method name="*search*" read-only="true"/>
            <tx:method name="*get*" read-only="true"/>

            <tx:method name="*insert*" propagation="REQUIRED"/>
            <tx:method name="*add*" propagation="REQUIRED"/>
            <tx:method name="*save*" propagation="REQUIRED"/>
            <tx:method name="*register*" propagation="REQUIRED"/>

            <tx:method name="*update*" propagation="REQUIRED"/>
            <tx:method name="*change*" propagation="REQUIRED"/>
            <tx:method name="*modify*" propagation="REQUIRED"/>
            <tx:method name="*set*" propagation="REQUIRED"/>

            <tx:method name="*delete*" propagation="REQUIRED"/>
            <tx:method name="*drop*" propagation="REQUIRED"/>
            <tx:method name="*remove*" propagation="REQUIRED"/>
            <tx:method name="*clear*" propagation="REQUIRED"/>

            <tx:method name="*" propagation="SUPPORTS"/>
        </tx:attributes>
    </tx:advice>
    <aop:config>
        <aop:pointcut id="mycut" expression="execution(* com.cotomi.service.impl.*.*(..))"/>
        <aop:advisor advice-ref="myadvice" pointcut-ref="mycut"></aop:advisor>
    </aop:config>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <context:component-scan base-package="com.cotomi.controller"></context:component-scan>
    <mvc:annotation-driven></mvc:annotation-driven>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/users/inlogin"/>
            <mvc:exclude-mapping path="/users/login"/>
            <mvc:exclude-mapping path="/users/register"/>
            <mvc:exclude-mapping path="/users/inregister"/>
            <bean class="com.cotomi.interceptor.LoginInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

 

jdbc:

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=root

 

SqlMapConfig

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
</configuration>

 

jsp界面:

<%--
  Created by IntelliJ IDEA.
  User: 音无彩名
  Date: 2022/5/22
  Time: 0:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
    <title>addEmail</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/email/addEmail">
    <tr>
        <td>发件人</td>
        <td><input type="text" name="eFrom" value="${sessionScope.user.uUsername}"></td>
    </tr>
    <tr>
        <td>收件人</td>
        <td><input type="text" name="eTo" value="${requestScope.eTo}"></td>
    </tr>
    <tr>
        <td>标题</td>
        <td><input type="text" name="eTitle"></td>
    </tr>
    <tr>
        <td>内容</td>
        <td><input type="text" name="eContent"></td>
    </tr>
    <tr>
        <td colspan="2">
            <input type="submit" value="发送">
        </td>
    </tr>
</form>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: 音无彩名
  Date: 2022/5/21
  Time: 22:33
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h2>邮件详细信息</h2>
<h2>欢迎你 ${sessionScope.user.uUsername} </h2>
<table border="1px" cellspacing="0px" cellpadding="30px">
    <tr>
        <th>邮件id</th>
        <th>发件人</th>
        <th>收件人</th>
        <th>标题</th>
        <th>内容</th>
        <th>创建日期</th>
        <th>邮件状态</th>
    </tr>
    <tr>
        <td>${email.eid}</td>
        <td>${email.eFrom}</td>
        <td>${email.eTo}</td>
        <td>${email.eTitle}</td>
        <td>${email.eContent}</td>
        <td><fmt:formatDate value="${email.eDatetime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></td>
        <td>${email.eStatus}</td>
    </tr>
</table>
<input type="button" value="返回" onclick="history.back()"><br><br>
<form action="${pageContext.request.contextPath}/email/delete" method="get">
    <input type="hidden" name="eid" value="${email.eid}">
    <input type="submit" value="删除该邮件"><br><br>
</form>
<form action="${pageContext.request.contextPath}/email/reply" method="get">
    <input type="hidden" name="eFrom" value="${email.eFrom}">
    <input type="submit" value="回复该邮件"><br><br>
</form>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: 音无彩名
  Date: 2022/5/22
  Time: 0:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h2>出错了</h2>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: 音无彩名
  Date: 2022/5/11
  Time: 17:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/users/login" method="post">
    用户名:<input type="text" name="username"><br>
    密码:<input type="password" name="password"><br>
    <input type="submit" value="登录">
</form>
${msg}
<hr>
<a href="${pageContext.request.contextPath}/users/inregister">注册界面</a>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: 音无彩名
  Date: 2022/5/11
  Time: 17:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/users/register" method="post">
    <h2>注册界面</h2>
    用户名<input type="text" name="username"><br>
    <td>密码<input type="password" name="password"><br>
    <td colspan="3"><input type="submit" value="注册">
</form>
<a href="${pageContext.request.contextPath}/users/inlogin">登录界面</a>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: 音无彩名
  Date: 2022/5/11
  Time: 19:26
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
    <title>主界面</title>
</head>
<body>
<h2>登录成功</h2>
<h2>欢迎你 ${sessionScope.user.uUsername} </h2>
${requestScope.msg}
<table border="1px" cellspacing="0px" cellpadding="30px">
    <tr>
        <th>邮件id</th>
        <th>标题</th>
        <th>创建日期</th>
        <th>邮件状态</th>
    </tr>
    <c:forEach items="${requestScope.allEmail}" var="email" varStatus="count">
        <tr>
            <td>${email.eid}</td>f
            <td><a href="${pageContext.request.contextPath}/email/detail?eid=${email.eid}">${email.eTitle}</a></td>
            <td><fmt:formatDate value="${email.eDatetime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></td>
            <td>${email.eStatus}</td>
        </tr>
    </c:forEach>
</table>
<input type="button" value="刷新" onclick="location.reload()">
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: 音无彩名
  Date: 2022/5/11
  Time: 18:32
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>开始</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/users/inlogin">一切从这里开始</a>
</body>
</html>

 

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
<!--
    private String encoding;
    private boolean forceRequestEncoding;
    private boolean forceResponseEncoding;
-->
    <filter>
        <filter-name>encode</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceRequestEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encode</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext_*.xml</param-value>
    </context-param>
</web-app>

 

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.cotomi</groupId>
  <artifactId>test0511</artifactId>
  <version>1.0</version>
  <packaging>war</packaging>



  <!-- 集中定义依赖版本号 -->
  <properties>
    <!--    单元测试的依赖-->
    <junit.version>4.12</junit.version>
    <!--    spring相关依赖-->
    <spring.version>5.2.5.RELEASE</spring.version>
    <!--    mybatis的相关依赖-->
    <mybatis.version>3.5.1</mybatis.version>
    <!--    mybatis与spring整合的依赖-->
    <mybatis.spring.version>1.3.1</mybatis.spring.version>
    <!--    mybatis的分页插件的依赖 前端若是vue等框架则用不到,若前端是jsp则一定会用到-->
    <mybatis.paginator.version>1.2.15</mybatis.paginator.version>
    <!--    mysql的依赖-->
    <mysql.version>8.0.28</mysql.version>
    <!--    slf4j日志依赖-->
    <slf4j.version>1.6.4</slf4j.version>
    <!--    阿里巴巴德鲁伊数据库连接池-->
    <druid.version>1.1.12</druid.version>
    <!--    分页插件的依赖-->
    <pagehelper.version>5.1.2</pagehelper.version>
    <!--    jstl的依赖(jsp的标准标签库)-->
    <jstl.version>1.2</jstl.version>
    <!--    servlet依赖-->
    <servlet-api.version>3.0.1</servlet-api.version>
    <!--    jsp的依赖-->
    <jsp-api.version>2.0</jsp-api.version>
    <!--    Jackson的依赖,springMVC框架默认进行JSON转换的依赖工具-->
    <jackson.version>2.9.6</jackson.version>
  </properties>

  <dependencies>
    <!-- spring -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jms</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>
    <!-- Mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>${mybatis.spring.version}</version>
    </dependency>
    <dependency>
      <groupId>com.github.miemiedev</groupId>
      <artifactId>mybatis-paginator</artifactId>
      <version>${mybatis.paginator.version}</version>
    </dependency>
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>${pagehelper.version}</version>
    </dependency>
    <!-- MySql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>
    <!-- 连接池 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>${druid.version}</version>
    </dependency>

    <!-- junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>com.bjpowernode.test</scope>
    </dependency>


    <!-- JSP相关 -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>${jstl.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <scope>provided</scope>
      <version>${jsp-api.version}</version>
    </dependency>
    <!-- Jackson Json处理工具包 -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20140107</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
  </dependencies>

  <!-- 插件配置 -->
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
    </plugins>
    <!--识别所有的配置文件-->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
  </build>

</project>

 

数据库创建语句:

CREATE TABLE `email` (
  `eid` int NOT NULL AUTO_INCREMENT,
  `e_from` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '发件人',
  `e_to` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '收件人',
  `e_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '邮件标题',
  `e_content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '邮件内容',
  `e_datetime` datetime NOT NULL COMMENT '邮件发送时间',
  `e_status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '邮件状态',
  PRIMARY KEY (`eid`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3;
CREATE TABLE `users` (
  `uid` int NOT NULL AUTO_INCREMENT,
  `u_username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `u_password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3;

 

运行截图:

JSP_Homework_10_0518

JSP_Homework_10_0518

JSP_Homework_10_0518

JSP_Homework_10_0518

JSP_Homework_10_0518

JSP_Homework_10_0518

 

 

 

 

 

 

 

 

————————————————————————————————————————————————————————

——————————————————————————————————————————

 

 

 

 

..

 

 安

 

JSP_Homework_10_0518

 

程序员灯塔
转载请注明原文链接:JSP_Homework_10_0518
喜欢 (0)