如何在idea中开发一个javaWeb应用程序
创始人
2024-12-28 13:42:11
0次

工程目录结构如下:

如何在idea中开发一个javaWeb应用程序

1、添加/修改用户页面

在webapp下新建目录user,用于存放用户相关的页面。
添加和修改使用的是同一个页面,通过url中的参数控制是否是修改操作。
后台通过是否传递了id进行判断新增还是修改。
新建:add.html,代码如下:




 
 登录页面
 
 




 
  欢迎进入我的网站
  
  

   天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。——孟子   

 
    添加用户           

登录账号: 

   

真实姓名: 

   

选择性别:      男     女    

   

登录密码: 

   

确认密码: 

        
//检查输入是否为非空 function submitAddUser() {  var uname = document.getElementById("uname").value;//获取输入的用户名的值  var pwd = document.getElementById("pwd").value;//获取输入的密码值  var pwdRepeat = document.getElementById("pwdRepeat").value;//获取输入确认密码值  var realName = document.getElementById("realName").value;//获取输入的姓名值  var sex = document.getElementById("sex").value;//获取输入的性别值  if(uname == "" || pwd == "" || pwdRepeat == "" || realName == "" || sex == "" ){   alert("请将信息填写完整后再提交。");   return;  }  if( pwd != pwdRepeat){   alert("两次密码输入不一致,请重新输入。");  }  document.getElementById("userAddForm").submit(); //输入不为空则跳转到主页面 } //从url中获取参数 function getQueryVariable(variable) {   var query = window.location.search.substring(1);   console.log(query);   var vars = query.split("&");   for (var i=0;i

2、查询用户页面

在user目录下新建list.jsp,代码如下:

<%@page import="java.util.ArrayList"%>
<%@page import="com.my.site.UserEntity"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>



 我的网站
 
 



<%
 ArrayList all = ( ArrayList)session.getAttribute("all");

%>

 
  用户查询
  
  

   天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。——孟子   

 
           编号    用户名    密码    真实姓名    性别    注册时间    操作      <%    for(UserEntity user:all)    {%>         <%=user.getId() %>     <%=user.getUname() %>     <%=user.getPwd() %>     <%= user.getRealName() %>     <%= user.getSex() %>     <%= user.getAdd_time() %>      " rel="external nofollow" >删除     &uname=<%=user.getUname()%>&pwd=<%=user.getPwd()%>&realName=<%=user.getRealName()%>&sex=<%=user.getSex()%>" rel="external nofollow" >修改             <%}   %>     

   当前时间: <%= (new java.util.Date()).toLocaleString()%>   

 
//点击按钮跳转到登录页面 function toAddUser() {  window.location.href="user/add.html" rel="external nofollow" ; } function toSearchUser() {  window.location.href="user/list" rel="external nofollow" ; }

3、编写后台逻辑-添加/修改

新建:UserAdd类

package com.my.site;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/user/addUser")
public class UserAdd extends HttpServlet {

 /** req 携带了请求相关信息,包括各种配置和请求参数; resp:携带返回相关信息 */
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  //从请求对象中获取请求参数:是从前端 usr/add.html页面的 userAddForm 表单提交过来的
  String uname = new String(req.getParameter("uname").getBytes("ISO-8859-1"),"utf-8");
  String pwd = new String(req.getParameter("pwd").getBytes("ISO-8859-1"),"utf-8");
  String realName = new String(req.getParameter("realName").getBytes("ISO-8859-1"),"utf-8");
  String sex = new String(req.getParameter("sex").getBytes("ISO-8859-1"),"utf-8");
  String pwdRepeat = new String(req.getParameter("pwdRepeat").getBytes("ISO-8859-1"),"utf-8");
  String id_str = req.getParameter("id");
  boolean bool = false;
  //如果有id,就执行更新操作,没有id则执行新增操作
  if(null != id_str && !"".equals(id_str)){
   int id = Integer.parseInt(req.getParameter("id"));
   bool = MySqlOperator.updateUser(id,uname, pwd, realName, sex);
  }else {
    bool = MySqlOperator.addUser(uname, pwd, realName, sex);
  }
  resp.setContentType("text/html;charset=UTF-8");
  if(bool){
   //跳转到主页面,并携带请求体,返回体对象。
   resp.sendRedirect("add.html?operation=addUser&success=true");
  }else{
   //校验失败则跳转到登录页面
   resp.sendRedirect("add.html?operation=addUser&success=false");
  }
 }
 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  doPost(req, resp);
 }
}

4、编写后台逻辑-查询

新建 UserList 类

package com.my.site;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;

@WebServlet("/user/list")
public class UserList extends HttpServlet {
 /** req 携带了请求相关信息,包括各种配置和请求参数; resp:携带返回相关信息 */
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  List all = MySqlOperator.listAllUser();
  HttpSession session = req.getSession();
  session.setAttribute("all",all);
  resp.setContentType("text/html;charset=UTF-8");
  resp.sendRedirect("list.jsp");
 }
 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  doPost(req, resp);
 }
}

5、编写后台逻辑-删除

新建UserDel

package com.my.site;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/user/del")
public class UserDel extends HttpServlet {

 /** req 携带了请求相关信息,包括各种配置和请求参数; resp:携带返回相关信息 */
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  //从请求对象中获取请求参数:是从前端 usr/add.html页面的 userAddForm 表单提交过来的
  int id = Integer.parseInt(req.getParameter("id").trim());
  MySqlOperator.delUser(id);
  resp.setContentType("text/html;charset=UTF-8");
  resp.sendRedirect("list");
 }

 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  doPost(req, resp);
 }
}

6、 编写数据库操作

package com.my.site;

import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MySqlOperator {

 private static final String MYSQL_URL = "jdbc:mysql://localhost:3309/ztest?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC";
 private static final String MYSQL_NAME = "root";
 private static final String MYSQL_PASSWORD = "MySql@8022";
 private static Connection conn = null;
 private static Statement stt = null;
 static {
  try {
   Class.forName("com.mysql.cj.jdbc.Driver");
   conn = DriverManager.getConnection(MYSQL_URL,MYSQL_NAME,MYSQL_PASSWORD);
   stt = conn.createStatement();
  } catch (ClassNotFoundException | SQLException e) {
   e.printStackTrace();
  }
 }
 /**
  * 根据用户名和密码检查是否合法用户,
  * @param uname
  * @param pwd
  * @return
  */
 public static boolean loginChecked(String uname,String pwd){
  try {
   Statement stt = conn.createStatement();
   String sql = "select * from user where account='"+uname+"' and password = '"+pwd+"'";//这样写是有sql注入漏洞的,后面会用到
   System.out.println(sql);
   ResultSet rs = stt.executeQuery(sql);
   while (rs.next()){
    return true;
   }
  } catch ( SQLException e) {
   e.printStackTrace();
  }
  return false;
 }
 /**
  * 添加用户
  */
 public static boolean addUser(String uname,String pwd,String realName,String sex){
  Date date = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:sss");
  String data_str = sdf.format(date);
  String sql = "insert into user(account,name,password,sex,add_time) values" +
    " ('"+uname+"','"+realName+"','"+pwd+"','"+sex+"','"+data_str+"')";
  System.out.println(sql);
  try {
   if(conn.isValid(2)){
    initConn();
   }
   stt.execute(sql);
   return true;
  } catch (SQLException throwable) {
   throwable.printStackTrace();
   return false;
  }
 }
 /**查询所有用户*/
 public static List listAllUser(){
  String sql = "select * from user";

  ResultSet rs = null;
  ArrayList all = new ArrayList<>();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:sss");
  try {
   rs = stt.executeQuery(sql);
   while (rs.next()){
    UserEntity user = new UserEntity();
    user.setUname(rs.getString("account"));
    user.setPwd(rs.getString("password"));
    user.setRealName(rs.getString("name"));
    user.setSex(rs.getString("sex"));
    user.setAdd_time(sdf.format(rs.getDate("add_time")));
    user.setId(rs.getInt("id"));
    all.add(user);
   }
   System.out.println(sql);
   System.out.println("查询条数:"+all.size());
   return all;
  } catch (SQLException throwable) {
   throwable.printStackTrace();
  }
  return all;
 }
 /**删除用户*/
 public static boolean delUser(int id) {
  String sql = "delete from user where id="+id;
  try {
   stt.execute(sql);
   return true;
  } catch (SQLException throwable) {
   throwable.printStackTrace();
   return false;
  }
 }
/**用于 mysql 连接断开后重连*/
 public static void initConn(){
  try {
   Class.forName("com.mysql.cj.jdbc.Driver");
   conn = DriverManager.getConnection(MYSQL_URL,MYSQL_NAME,MYSQL_PASSWORD);
   stt = conn.createStatement();
  } catch (ClassNotFoundException | SQLException e) {
   e.printStackTrace();
  }
 }
/**更新用户信息*/
 public static boolean updateUser(int id, String uname, String pwd, String realName, String sex) {
  Date date = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:sss");
  String data_str = sdf.format(date);
  String sql = "update user set account='"+uname+"',password='"+pwd+"',name='"+realName+"',sex='"+sex+"',add_time='"+data_str+"' where id="+id;
  System.out.println(sql);
  try {
   if(conn.isValid(2)){
    initConn();
   }
   stt.execute(sql);
   return true;
  } catch (SQLException throwable) {
   throwable.printStackTrace();
   return false;
  }
 }
}

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...