精华内容
下载资源
问答
  • 手把手搭建一个完整javaweb项目(适合新手)

    万次阅读 多人点赞 2017-06-23 07:27:04
    手把手搭建一个完整javaweb项目 本案例使用Servlet+jsp制作,用MyEclipse和Mysql数据库进行搭建,详细介绍了搭建过程及知识点。 下载地址:http://download.csdn.net/detail/qq_23994787/9904842点击下载 主要...

    手把手搭建一个完整的javaweb项目

    本案例使用Servlet+jsp制作,用MyEclipse和Mysql数据库进行搭建,详细介绍了搭建过程及知识点。

     

    下载地址:http://download.csdn.net/detail/qq_23994787/9904842  点击下载

    主要功能有:

    1.用户注册

    2.用户登录

    3.用户列表展示

    4.用户信息修改

    5.用户信息删除

     

    涉及到的知识点有:   

    1.JDBC

    2.Servlet

    3.过滤器

    4..EL与JSTL表达式

     

    1.首先打开mysql数据库 新建一个数据库test,然后生成对应的表结构

     

    CREATE TABLE `user` (
      `id` int(11) NOT NULL auto_increment,
      `name` varchar(255) NOT NULL,
      `pwd` varchar(255) NOT NULL,
      `sex` varchar(255) NOT NULL,
      `home` varchar(255) NOT NULL,
      `info` varchar(255) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    
    
    INSERT INTO `user` VALUES ('3', '123', '123', '123', '123', '123');
    INSERT INTO `user` VALUES ('4', '123123', '123123', '男', '北京', '123123');
    

     

    这里使用到了navicat for mysql    这是一种mysql的图形界面化工具,后期可以非常方便的操作数据库。

     

    需要的童鞋 给你们个连接     http://download.csdn.net/download/qq_23994787/10168988

    2.然后打开MyEclipse新建一个web项目

    3.在webroot下的WEB-INF下的lib中导入mysql的驱动jar包

    4.建立对应的包结构 
    com.filter   //过滤器 解决中文字符集乱码
    com.util     //数据库连接工具类
    com.entity   //实体类
    com.dao      //数据操作类
    com.servlet   //servlet类

    5.在filter下新建一个EncodingFilter用来解决中文字符集乱码,它需要实现Filter接口,并重写doFilter函数

     

    package com.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class EncodingFilter implements Filter{
    	public EncodingFilter(){
    		System.out.println("过滤器构造");
    	}
    	public void destroy() {
    		System.out.println("过滤器销毁");
    	}
    	public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
    		request.setCharacterEncoding("utf-8"); //将编码改为utf-8
    		response.setContentType("text/html;charset=utf-8");
    		chain.doFilter(request, response);
    	}
    
    	public void init(FilterConfig arg0) throws ServletException {
    		System.out.println("过滤器初始化");
    	}
    
    }
    

     


    6.到web.xml下进行对EncodingFilter相应的配置

     

     

     

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <display-name></display-name>	
      
      <filter>
      	<filter-name>EncodingFilter</filter-name>
      	<filter-class>com.filter.EncodingFilter</filter-class><!--全路径 从根包开始一直到类名-->
      </filter>
      <filter-mapping>
      	<filter-name>EncodingFilter</filter-name>
      	<url-pattern>/*</url-pattern> <!--*即为过滤所有-->
      </filter-mapping>
      
      
      <welcome-file-list>
        <welcome-file>denglu.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    

     


    7.在util下新建一个DBconn类用来处理对数据库的连接操作(用户名或密码按照自己的数据库更改)

     

     

     

    package com.util;
    
    import java.sql.*;
    
    public class DBconn {
    	static String url = "jdbc:mysql://localhost:3306/test?useunicuee=true& characterEncoding=utf8"; 
    	static String username = "root"; 
    	static String password = "root"; 
    	static Connection  conn = null;
    	static ResultSet rs = null;
    	static PreparedStatement ps =null;
    	public static void init(){
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			conn = DriverManager.getConnection(url,username,password);
    		} catch (Exception e) {
    			System.out.println("init [SQL驱动程序初始化失败!]");
    			e.printStackTrace();
    		}
    	}
    	public static int addUpdDel(String sql){
    		int i = 0;
    		try {
    			PreparedStatement ps =  conn.prepareStatement(sql);
    			i =  ps.executeUpdate();
    		} catch (SQLException e) {
    			System.out.println("sql数据库增删改异常");
    			e.printStackTrace();
    		}
    		
    		return i;
    	}
    	public static ResultSet selectSql(String sql){
    		try {
    			ps =  conn.prepareStatement(sql);
    			rs =  ps.executeQuery(sql);
    		} catch (SQLException e) {
    			System.out.println("sql数据库查询异常");
    			e.printStackTrace();
    		}
    		return rs;
    	}
    	public static void closeConn(){
    		try {
    			conn.close();
    		} catch (SQLException e) {
    			System.out.println("sql数据库关闭异常");
    			e.printStackTrace();
    		}
    	}
    }
    

     


    8.在entity下新建一个User实体类(实体即抽象出来的用户对象,对应数据库中的user表,表中每个字段在实体中为一个属性,也可以理解为一个User对象对应数据库中的user表一条记录)

     

     

     

    package com.entity;
    
    public class User {
        private int id;
        private String name;
        private String pwd;
        private String sex;
        private String home;
        private String info;
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getPwd() {
    		return pwd;
    	}
    	public void setPwd(String pwd) {
    		this.pwd = pwd;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public String getHome() {
    		return home;
    	}
    	public void setHome(String home) {
    		this.home = home;
    	}
    	public String getInfo() {
    		return info;
    	}
    	public void setInfo(String info) {
    		this.info = info;
    	}
        
    }
    

     


    9.在dao下新建一个UserDao接口  以及对应的方法实现类(使用接口类是为了规范开发)

     

     

    UserDao.java

     

    package com.dao;
    
    import java.util.List;
    
    import com.entity.User;
    
    public interface UserDao {
    	public boolean login(String name,String pwd);//登录
    	public boolean register(User user);//注册
    	public List<User> getUserAll();//返回用户信息集合
    	public boolean delete(int id) ;//根据id删除用户
    	public boolean update(int id,String name, String pwd,String sex, String home,String info) ;//更新用户信息
    }
    

     

    新建UserDaoImpl.java     实现UserDao接口,及未实现的方法     (SQL语句建议在mysql中测试以下,没有问题然后在拿到实现类中使用,可以避免无必要的麻烦)

    本例子SQL使用字符串拼接的方式,其实还有一种预加载的方式,有兴趣的童鞋可以参考我的博客,了解预加载的方式处理SQL语句与字符串拼接方式的区别。

    package com.dao;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.entity.User;
    import com.util.DBconn;
    
    public class UserDaoImpl implements UserDao{
    	
    	public boolean register(User user) {
    		boolean flag = false;
    		DBconn.init();
    		int i =DBconn.addUpdDel("insert into user(name,pwd,sex,home,info) " +
    				"values('"+user.getName()+"','"+user.getPwd()+"','"+user.getSex()+"','"+user.getHome()+"','"+user.getInfo()+"')");
    		if(i>0){
    			flag = true;
    		}
    		DBconn.closeConn();
    		return flag;
    	}
        public boolean login(String name, String pwd) {
    		boolean flag = false;
    		try {
    			    DBconn.init();
    				ResultSet rs = DBconn.selectSql("select * from user where name='"+name+"' and pwd='"+pwd+"'");
    				while(rs.next()){
    					if(rs.getString("name").equals(name) && rs.getString("pwd").equals(pwd)){
    						flag = true;
    					}
    				}
    				DBconn.closeConn();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return flag;
    	}
    	public List<User> getUserAll() {
    		List<User> list = new ArrayList<User>();
        	try {
    		    DBconn.init();
    			ResultSet rs = DBconn.selectSql("select * from user");
    			while(rs.next()){
    				User user = new User();
    				user.setId(rs.getInt("id"));
    				user.setName(rs.getString("name"));
    				user.setPwd(rs.getString("pwd"));
    				user.setSex(rs.getString("sex"));
    				user.setHome(rs.getString("home"));
    				user.setInfo(rs.getString("info"));
    				list.add(user);
    			}
    			DBconn.closeConn();
    			return list;
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    	public boolean update(int id,String name, String pwd,String sex, String home,String info) {
    		boolean flag = false;
    		DBconn.init();
    		String sql ="update user set name ='"+name
    				+"' , pwd ='"+pwd
    				+"' , sex ='"+sex
    				+"' , home ='"+home
    				+"' , info ='"+info+"' where id = "+id;
    		int i =DBconn.addUpdDel(sql);
    		if(i>0){
    			flag = true;
    		}
    		DBconn.closeConn();
    		return flag;
    	}
    	public boolean delete(int id) {
    		boolean flag = false;
    		DBconn.init();
    		String sql = "delete  from user where id="+id;
    		int i =DBconn.addUpdDel(sql);
    		if(i>0){
    			flag = true;
    		}
    		DBconn.closeConn();
    		return flag;
    	}
        
    }
    

     

     

     

    10.在servlet下创建DengluServlet用来实现对用户登录的操作(Servlet有两种方式创建,一种手工创建。另一种程序自动生成。前者自己创建java类,实现Servlet具体内容,然后需要去WEB_INF下的web.xml去配置servlet  . 而后者则直接由程序替我们配置好了Servlet)本例子使用第二种方式生成Servlet

     

     

     

    DengluServlet.java

     

    package com.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.dao.UserDao;
    import com.dao.UserDaoImpl;
    
    public class DengluServlet extends HttpServlet {  //需要继承HttpServlet  并重写doGet  doPost方法
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doPost(request, response);  //将信息使用doPost方法执行   对应jsp页面中的form表单中的method
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		
    		String name = request.getParameter("name"); //得到jsp页面传过来的参数
    		String pwd = request.getParameter("pwd");
    		
    		UserDao ud = new UserDaoImpl();
    		
    		if(ud.login(name, pwd)){
    			request.setAttribute("xiaoxi", "欢迎用户"+name); //向request域中放置信息
    			request.getRequestDispatcher("/success.jsp").forward(request, response);//转发到成功页面
    		}else{
    			response.sendRedirect("index.jsp"); //重定向到首页
    		}
    	}
    
    }
    

     

    有两点要注意的地方:

    一:getParameter与getAttribute两者的区别

    request.setAttribute("xiaoxi", "欢迎用户"+name);//向request域中放置信息 ( 键值对的形式)  名字为xiaoxi  内容为"欢迎用户"+name

    request.getAttribute("xiaoxi");//得到request域中放置名字为xiaoxi的信息

    request.getParameter("name");//得到request域的参数信息(得到jsp页面传过来的参数)

    getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型 。

    getParameter表示接收参数,参数为页面提交的参数,包括:表单提交的参数、URL重写(就是xxx?id=1中的id)传的参数等,因此这个并没有设置参数的方法(没有setParameter),而且接收参数返回的不是Object,而是String类型

    二:转发与重定向的区别

    (1).重定向的执行过程:Web服务器向浏览器发送一个http响应--》浏览器接受此响应后再发送一个新的http请求到服务器--》服务器根据此请求寻找资源并发送给浏览器。它可以重定向到任意URL,不能共享request范围内的数据。
    (2).重定向是在客户端发挥作用,通过新的地址实现页面转向。
    (3).重定向是通过浏览器重新请求地址,在地址栏中可以显示转向后的地址。
    (4).转发过程:Web服务器调用内部方法在容器内部完成请求和转发动作--》将目标资源发送给浏览器,它只能在同一个Web应用中使用,可以共享request范围内的数据。
    (5).转发是在服务器端发挥作用,通过forward()方法将提交信息在多个页面间进行传递。
    (6).转发是在服务器内部控制权的转移,客户端浏览器的地址栏不会显示出转向后的地址。

     

    11.在servlet下创建一个ZhuceServlet用来实现用户注册的操作

     

    ZhuceServlet.java

     

    package com.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import com.dao.UserDao;
    import com.dao.UserDaoImpl;
    import com.entity.User;
    
    public class ZhuceServlet extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doPost(request, response);
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		
    		String name = request.getParameter("name"); //获取jsp页面传过来的参数
    		String pwd = request.getParameter("pwd");
    		String sex = request.getParameter("sex");
    		String home = request.getParameter("home");
    		String info = request.getParameter("info");
    		
    		User user = new User(); //实例化一个对象,组装属性
    		user.setName(name);
    		user.setPwd(pwd);
    		user.setSex(sex);
    		user.setHome(home);
    		user.setInfo(info);
    		
    		UserDao ud = new UserDaoImpl();
    		
    		if(ud.register(user)){
    			request.setAttribute("username", name);  //向request域中放置参数
    			//request.setAttribute("xiaoxi", "注册成功");
    			request.getRequestDispatcher("/denglu.jsp").forward(request, response);  //转发到登录页面
    		}else{
    			
    			response.sendRedirect("index.jsp");//重定向到首页
    		}
    	}
    }
    

     


    12.在servlet下创建SearchallServlet用来返回数据库中所有用户信息

     

     

    Searchall.java

     

    package com.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.dao.UserDao;
    import com.dao.UserDaoImpl;
    import com.entity.User;
    
    public class Searchall extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doPost(request, response);
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		
    		UserDao ud = new UserDaoImpl();
    		List<User> userAll = ud.getUserAll();
    		request.setAttribute("userAll", userAll);
    		request.getRequestDispatcher("/showall.jsp").forward(request, response);
    	}
    }
    

     


    13.在servlet下创建DeleteServlet用来删除用户操作

     

     

    DeleteServlet.java

     

    package com.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.dao.UserDao;
    import com.dao.UserDaoImpl;
    
    public class DeleteServlet extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doPost(request, response);
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		
    		String id = request.getParameter("id");
    		int userId = Integer.parseInt(id);
    		
    		UserDao ud = new UserDaoImpl();
    		
    		if(ud.delete(userId)){
    			request.setAttribute("xiaoxi", "删除成功");
    			request.getRequestDispatcher("/Searchall").forward(request, response);
    		}else{
    			response.sendRedirect("index.jsp");
    		}
    	}
    
    }
    

     


    14.在servlet下创建UpdateServlet操作用来更新用户信息

     

     

    UpdateServlet.java

     

    package com.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.dao.UserDao;
    import com.dao.UserDaoImpl;
    import com.entity.User;
    
    public class UpdateServlet extends HttpServlet {
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doPost(request, response);
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		
    		String id = request.getParameter("id");
    		int userId = Integer.parseInt(id);
    		
    		String name = request.getParameter("name");
    		String pwd = request.getParameter("pwd");
    		String sex = request.getParameter("sex");
    		String home = request.getParameter("home");
    		String info = request.getParameter("info");
    		
    		System.out.println("------------------------------------"+userId);
    		
    		UserDao ud = new UserDaoImpl();
    		
    		if(ud.update(userId, name, pwd, sex, home, info)){
    			request.setAttribute("xiaoxi", "更新成功");
    			request.getRequestDispatcher("/Searchall").forward(request, response);
    		}else{
    			response.sendRedirect("index.jsp");
    		}
    	}
    }
    
    


    15.配置servlet       如果非手打而用MyEclipse生成则不用配置  附完整web.xml

     

     

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <display-name></display-name>	
      
      <filter><!--过滤器配置-->
      	<filter-name>EncodingFilter</filter-name>
      	<filter-class>com.filter.EncodingFilter</filter-class>
      </filter>
      <filter-mapping>
      	<filter-name>EncodingFilter</filter-name>
      	<url-pattern>/*</url-pattern>
      </filter-mapping>
      
      
      
      <servlet><!--servlet类路径配置-->
        <servlet-name>DengluServlet</servlet-name>
        <servlet-class>com.servlet.DengluServlet</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>ZhuceServlet</servlet-name>
        <servlet-class>com.servlet.ZhuceServlet</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>Searchall</servlet-name>
        <servlet-class>com.servlet.Searchall</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>DeleteServlet</servlet-name>
        <servlet-class>com.servlet.DeleteServlet</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>UpdateServlet</servlet-name>
        <servlet-class>com.servlet.UpdateServlet</servlet-class>
      </servlet>
    
    
    
      <servlet-mapping><!--servlet类映射配置-->
        <servlet-name>DengluServlet</servlet-name>
        <url-pattern>/DengluServlet</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>ZhuceServlet</servlet-name>
        <url-pattern>/ZhuceServlet</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>Searchall</servlet-name>
        <url-pattern>/Searchall</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>DeleteServlet</servlet-name>
        <url-pattern>/DeleteServlet</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>UpdateServlet</servlet-name>
        <url-pattern>/UpdateServlet</url-pattern>
      </servlet-mapping>
      
      
      
      <welcome-file-list><!--默认首页地址-->
        <welcome-file>denglu.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    


    16.新建jsp页面

     

    denglu.jsp 用户登录页面      默认页面进入项目后  先进入该页面(web.xml中配置)    

    form表单中需要注意的是<form action="DengluServlet"  method="post">

    其中action即为要跳转的servlet路径(即在web.xml中配置的servlet-mapping   :<url-pattern>/DengluServlet</url-pattern>   ,)写  /  后的内容。

    method="post"为传递值得方法类型有两种,第一种get,第二种post。网上介绍这两种的区别有很多,阐述的又是百家争鸣。而我觉得那个方便就用那个,一般使用post传递,可避免乱码。

    另一个需要注意的是   用户名:<input type="text" name="name" value="">  input标签  一定要起个名字  如name="name"  

    起名的作用就是让后台通过request.getParterment("name");来取值

     

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>登录注册页面</title>
      </head>
      <body >
             <form action="DengluServlet"  method="post"  style="padding-top:-700px;">
    		用户名:<input type="text" name="name"value=""><br><br>
     		密码:  <input type="password" name="pwd"value=""><br><br>
    	                <input type="submit"value="登录"name="denglu"><input type="reset"value="重置"><br>
    	 </form>
    	 <form action="zhuce.jsp">
    	 	<input type="submit"value="新用户注册">
             </form>
        
      </body>
    </html>
    


    zhuce.jsp  用户注册页面

     

     

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP 'BB.jsp' starting page</title>
      </head>
      <body >
      <form action="ZhuceServlet"method="post" style="padding-top:-700px;">
    	   输入用户名:<input name="name" type="text"><br><br>
    	   输入密码:<input name="pwd" type="password"><br><br>
    	   选择性别:<input type="radio"name="sex"value="男"checked>男
    	        <input type="radio"name="sex"value="女">女<br><br>
    	   选择家乡:
    	   <select name="home">
    		   <option value="上海">上海</option>
    		   <option value="北京" selected>北京</option>
    		   <option value="纽约">纽约</option>
       		</select><br>
                   填写个人信息:<br>
    	   <textarea name="info" row="5"cols="30"></textarea><br>
    	   <input type="reset"value="重置"><input type="submit"value="注册">
       </form>
      </body>
    </html>
    

     
    index.jsp  失败页面

     

     

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP 'index.jsp' starting page</title>
      </head>
      <body>
        		<h1>失敗</h1>
      </body>
    </html>
    

     

    success.jsp  成功页面

     

     

    ${xiaoxi}为EL表达式  获取request域中的键名为xiaoxi的值

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP 'success.jsp' starting page</title>
      </head>
      <body>
    			${xiaoxi} <br>  
    			<a href="Searchall">查看所有用户</a>
      </body>
    </html>

    showall.jsp   展现所有用户页面

    页面使用的到JSTL表达式 即c标签。使用c标签需要引入头文件<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 。

    需要注意的的是El标签配合JSTl标签的使用,<c:forEach var="U" items="${userAll}"  >   例子foeEach标签的遍历内容即为EL表达式获取的${userAll}

    而且当指定别名后var="U"  ,别名可以随便起,为了方便一般是小写类名命名。  

    C标签内遍历的属性也是需要用${  }获取。此时别名U即为当前集合中的User对象,想得到属性只需要用 ${ U.属性名 }     即可

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        <title>所有用户页面</title>
      </head>
      
      <body>
      <h1>${xiaoxi}</h1>
      <table  width="600" border="1" cellpadding="0" >
      		<tr>
      			<th>ID</th>
    	  		<th>姓名</th>
    	  		<th>性别</th>
    	  		<th>密码</th>
    	  		<th>家乡</th>
    	  		<th>备注</th>
    	  		<th>操作</th>
      		</tr>
         <c:forEach var="U" items="${userAll}"  > 
          <form action="UpdateServlet" method="post"> 
           <tr>
    	       <td><input type="text" value="${U.id}" name="id" ></td>
    	       <td><input type="text" value="${U.name}" name="name"></td>
    	       <td><input type="text" value="${U.sex}" name="sex"></td>
    	       <td><input type="text" value="${U.pwd}" name="pwd"></td>
    	       <td><input type="text" value="${U.home}" name="home"></td>
    	       <td><input type="text" value="${U.info}" name="info"></td>
    	       <td><a href="DeleteServlet?id=${U.id}">删除</a>  <input type="submit" value="更新"/></td>
    	   </tr>
        </form> 
        </c:forEach>  
        </table>
      </body>
    </html>
    

     

     

    项目结构

    最后要说的话

    1.编程不是看会的,是敲会的。只要敲敲敲,才可以深刻的记忆,当然这只能称之为会用,之后深入了解其实现原理才能将其吸收融会贯通。

    2.要养成良好的代码习惯,整洁干净,命名规范,以及详细的注释。这对帮助你成长都大有裨益。

    3.要阅读大牛写的代码,一个人的力量终究是有限的,经常阅读高质量的源码,无形之中就会改变我们的思路,就好比自己琢磨武功,与拥有武林秘籍者相比...

     

    -----------附------------------2018.8.12-------------------------------------------------------

    该文是我几年前进行编辑的一篇文章,其中不乏出现一些不规整的错误,比如命名规范,代码冗余等,可能对于一些小伙伴们来说造成了一些困扰,不过相对来说,本文在一定程度上对javaweb的入门还是具有一定程度上的帮助。但是作为一名严谨的Java开发工程师(码猿)为了大家不再入门时就走弯路,顾我决定重新讲解javaweb方面的知识与内容,并以企业开发规范为标准来实现一个基于javaweb的小系统给大家进行参考。系统开发以完成后续我会整理发布到我的博客中。

     

     

    展开全文
  • 完整javaweb项目,有很大的参考价值,对学习java有很大帮助
  • Javaweb商城项目实战篇

    千人学习 2019-07-24 22:23:36
    本门课程核心围绕javaweb实战网上商城项目作为...课程主要包括: 第1章 Javaweb项目实战——搭建和登录注册模块 第2章 Javaweb项目实战-商品模块 第3章 Javaweb项目实战—购物车模块 第4章 Javaweb项目实战—订单模块
  • 完整javaweb项目

    2018-08-12 10:08:48
    主要功能有以下几个: 1.用户注册 2.用户登录 3.用户列表展示 4.用户信息修改 5.用户信息删除
  • JavaWeb电商项目实战

    千人学习 2019-04-25 15:54:24
    本课程是JavaWeb综合项目实战,期望学员通过本课程,能够熟练掌握使用JavaWeb技术实现项目的开发,能够使用反射技术进行小型框架的编写。从授课内容角度上,本课程最大特色是从零开始,从项目开发流程,到需求分析,...
  • JavaWEB商城项目源码(有后台)

    万次阅读 多人点赞 2018-09-20 18:06:19
    前台页面 1.商城首页(搜索功能:使用的是JQquery实现,模糊查询显示商品列表,单击商品名称,自动填充搜索框) 2....增删改功能() 项目下载链接:https://download.csdn.net/download/qq_35394707/10679050

    前台页面

    1.商城首页(搜索功能:使用的是JQquery实现,模糊查询显示商品列表,单击商品名称,自动填充搜索框)

    2.商城分类页面(分类列表这里只做了6个是利用Ajax从数据库读取的,如有需要自行添加)

    3.商城列表(商品图片是存在在我本机tomcat中,你们在运行时可能会没图片,这是就可以使用后台管理系统自行添加商品,并上传图片)

    4.商品详情(添加商品时使用富文本编辑器添加的商品描述)

    购物车(使用Session实现的)

    6.订单页面(可以实现收货地址的增删改查)

    7.付款界面,使用的是第三方平台易宝,我写的是农业银行,学要更改的话自行更改

    后台管理系统

    1.首页(使用EasyUI实现的页面,只实现了简单的增删改查)

     

    2.添加功能(重点使用了富文本编辑器 注意:必须上传图片 否则报错  没有进行判断)

     

    3.增删改功能()

    项目下载链接:https://download.csdn.net/download/qq_35394707/10679050

    展开全文
  • 你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,或者没有...以下项目javaweb 基础项目到 SSH 和 SSM 进阶项目,再到后面会更新 springboot 项目,感谢大家的支持,希望分享的项目在你学.

    你知道的越多,你不知道的越多
    点赞再看,养成习惯
    如果您有疑问或者见解,或者没有积分想获取项目,欢迎指教:
    企鹅:869192208

    前言

    为了方便各位朋友能快速找到自己需要的项目,特将博客中发布过的项目,整理成目录,方便大家查阅。以下项目从 javaweb 基础项目到 SSH 和 SSM 进阶项目,再到后面会更新 springboot 项目,感谢大家的支持,希望分享的项目在你学习开发的路上起到一点作用。

    需要定制 java 大作业和毕业设计的童鞋,也可以联系我,我会帮你找到甚至定做专属于你的 java 项目。

    JavaWeb(Servlet+jsp)基础项目

    1. 基于servlet+jsp 的 java 简单版商城项目
    2. 基于 jsp+servlet+mysql 开发旅游推介网站和后台管理系统(maven项目)
    3. 基于 servlet+jsp+mysql 的 javaWeb 个人博客
    4. 基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统
    5. 基于 Servlet + jsp 的企业财务管理系统设计与实现
    6. 基于 Servlet+jsp+mysql 开发 javaWeb 学生网络考试系统
    7. 基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统
    8. 基于 Servlet+jsp+mysql 开发 javaWeb 养老院信息管理系统
    9. 基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统

    JavaWeb进阶项目(SSH/SSM)

    SSH项目(Spring+Struts2+Hibernate / Spring+SpringMVC+Hibernate)
    1. 基于Spring+Struts2+Hibernate开发易买网商城系统
    2. 基于SSH(Spring+SpringMVC+Hibernate)开发学生宿舍管理系统
    3. 基于SSH(Spring+Struts2+Hibernate)开发电子政务网站系统
    4. 基于Struts2开发JavaWeb学生宿舍管理系统
    5. 基于Spring+Struts2+Hibernate 的商城系统
    6. 基于 SSH(Spring+Struts2+Hibernate) 的动漫论坛的设计与实现
    7. 基于Spring+SpringMVC+Hibernate的图书管理系统
    SSM项目
    1. 基于Spring+SpringMVC+Mybatis开发网上书店系统(Maven项目)
    2. 基于Spring+SpringMVC+Mybatis开发服装商城系统(Maven项目)
    3. 基于Spring+SpringMVC+Mybatis开发户型管理系统

    JAVAWEB毕业设计项目

    1. 基于Spring+SpringMVC+Mybatis开发房屋租赁系统
    展开全文
  • 这是一个百度网盘链接,里面有完整Javaweb项目链接和密码,包括开发视频过程,代码,工具,毕设设计等等。这是其中一个链接:https://pan.baidu.com/s/15xT0go-ZXJ5FGvAZdpCUHQ(下载前请先查看链接是否有效,如果...
  • JAVAWEB项目完整环境配置 换电脑了,又要从头配置一遍javaweb的环境,记下来以后方便查看。 java环境 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 注意:按照提示安装,记住...

    JAVAWEB项目的完整环境配置

    换电脑了,又要从头配置一遍javaweb的环境,记下来以后方便查看。

    java环境

    下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

    注意:按照提示安装,记住安装文件的位置

    环境配置:此电脑→属性→高级系统设置→高级→环境变量(以我的安装目录为例)

    1)新建系统变量

    变量名:JAVA_HOME ,变量值:D:\Java\jdk-13.0.1

    变量名:CLASSPATH, 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

    2)编辑系统变量Path

    变量名:Path,变量值:%JAVA_HOME%\bin; %JAVA_HOME%\jre\bin

    3)解决电脑重启后找不到java

    在用户变量的path中增加一个jdk的bin的地址:D:\Java\jdk-13.0.1\bin

    验证:cmd打开命令提示符,输入java -version,会有版本信息。

    eclipse下载安装

    下载地址:https://www.eclipse.org/downloads/packages/

    下载版本:在2019-09的版本中,Eclipse IDE for Enterprise Java Developers包括了java和web的开发。

    注意:下载时,可以选择其他镜像(select Another Mirror),选择国内的镜像,速度会快很多。

    验证:将下载完成的安装包解压,点击文件夹内的eclipse.exe即可启动。

    tomcat下载安装

    下载地址:在https://tomcat.apache.org/中选择合适的版本,根据操作系统选择Core下的压缩包下载。

    注意:压缩包为免安装版Tomcat,下载完成后将压缩包解压,并记住解压文件的存放位置。

    环境配置

    1)新建系统变量

    变量名:CATALINA_HOME,变量值:D:\apache-tomcat-9.0.27-windows-x64\apache-tomcat-9.0.27

    2)编辑系统变量Path

    变量名:Path,变量值:%CATALINA_HOME%\bin

    验证:打开cmd命令提示符,输入startup后回车,可以看到tomcat成功启动。

    ​ 在浏览器地址栏输入localhost:8080,出现tomcat的官网。

    数据库的安装(Oracle)

    下载地址:https://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html 根据操作系统选择11g的版本,下载两个压缩文件夹。

    安装步骤

    1)将两个压缩包一起选中解压,打开文件夹,双击打开setup.exe

    2)按提示安装。不勾选希望通过My Oracle Support接收安全更新、勾选创建和配置数据库、桌面类

    、……、口令管理(去掉scott的勾选)等。

    建立第一个javaweb项目

    打开eclipse.exe,选择File-New-Dynamic Web Project。填写Project name,配置Target runtime,选择tomcat的安装目录,点击两次Next,勾选Generate web.xml deployment descriptor(可以不用自己写xml文件),点击Finish

    展开全文
  • 完整javaweb项目,有很大的参考价值,对学习java有很大帮助!
  • javaweb项目实例

    2019-07-26 06:42:32
    javaweb项目实例,适合新手,超级详细,内含笔记与详细实现步骤
  • JavaWeb快速入门(一)——新建JavaWeb项目

    万次阅读 多人点赞 2018-07-04 20:01:33
    下午开始将JavaWeb服务器端程序开发,包含:处理请求和展示返回回来的数据。其中,处理请求分为四步:1、创建javaweb工程,2、开启服务器,3、编写处理请求的代码,4、运行。(一)创建javaweb工程 在创建之前,电脑...
  • 一个完整javaweb项目

    万次阅读 多人点赞 2017-03-10 15:45:13
    以此来记录如何完成一个完整javaweb项目,包括项目的搭建、登录模块、用户模块、dao层。 此项目为本人工作之余提炼技术之所作,如有问题,欢迎指正!
  • javaWeb项目说明

    2019-07-30 12:13:22
    JavaWeb项目包括实践JavaWeb项目的前置知识学习,在实践过程中的实践指南,JavaWeb项目的结果 JavaWeb项目学为三部分: 1,javaWeb项目学习笔记 HTML学习笔记 CSS学习笔记 JS学习笔记 Servlet学习笔记 JSP...
  • 功能描述:包括用户的登录注册,以及个人资料的修改.商品的分类展示,详情,加入购物车,生成订单,到银行支付等!另外还有收货地址的和我的收藏等常用操作.环境(JDK 1.7 ,mysql 5.5,Eclipse mars2 ).
  • javaweb书城项目

    千次阅读 2019-07-14 20:56:48
    项目文件 https://github.com/fuzekun/BookStore 一.开发环境介绍 1.IDEA 2017 2.jdk 8 以上 3.mysql 8.0 4.tomcat 3.9 二.部署介绍 1.创建数据库 使用create.sql文件 在dos下进入文件所在文件夹 在...
  • javaweb商城项目源代码

    2016-03-20 23:44:39
    购物商城文件JAVAWEB源码,一个完整javaweb商城源代码。
  • JavaWEB项目实战

    2020-04-11 10:36:36
    本套视频详细讲解基于jQuery、jQuery EasyUI搭建企业级管理平台。使用JavaWEB技术完成整个...没使用到JSP技术 数据库:mysql 重点说明:本项目主要是针对学习java基础、前端基础、JavaWEB基础、数据库基础朋友。
  • 教务管理系统JavaWeb项目

    万次阅读 多人点赞 2018-03-25 16:35:06
    刚学完javaweb,做个项目练手与巩固所学的知识,...所以非常适合javaweb初学者教务管理系统javaweb项目运行环境:window系统,Apache Tomcat v7.0.84、JDK1.8开发环境:J2EE eclipse、navicat for mysql运用的技术...
  • javaweb期末项目

    千次阅读 2019-06-18 11:49:21
    体验网站地址: http://jw.chenr.cn/ github地址: https://github.com/CCZX/Java-Web
  • JavaWeb项目实战

    千次阅读 2021-04-02 09:23:05
    本文讲述关于一个javaweb本地项目:学生信息管理系统的实现,从环境搭建,到数据库的连接,到servlet的实现,再到jsp与后台交互,采用mvc架构,其中还有filter,ajax对页面展示的处理,使用gitee托管项目。...
  • JavaWeb经典项目-图书管理系统
  • Javaweb图书管理系统--完整项目,整个项目完整打包。
  • java+web项目开发,javaweb开发完整实例源代码

    千次下载 热门讨论 2014-03-20 11:18:14
    深入体验java+web开发,javaweb开发完整实例源代码,里面包含使用说明和注解,共有十个不同类型的项目案例供你学习。
  • Eclipse开发JavaWeb项目配置Tomcat,详细教程

    万次阅读 多人点赞 2018-01-23 15:22:40
    首先介绍eclipse开发JavaWeb项目需要配置的相关环境,使用tomcat软件在本地搭建服务器,然后再在eclipse环境下配置tomcat: 第一步:使用tomcat软件在本地搭建服务器,这个本地的tomcat服务器与eclipse环境下配置...
  • javaWEB项目jsp+servlet+mysql完整版下载

    热门讨论 2016-12-02 13:22:56
    javaweb项目是由jsp+servlet+mysql技术所写的,项目里面有创建表的sql文件,功能包括了完整的对用户的添加,修改,删除,查询整表,等技术,很适合基础学习,项目目录层次清晰,可在基础上继续添加新的功能,希望...
  • 完整javaweb项目(新手)

    千次阅读 多人点赞 2019-04-21 17:26:40
    项目实现的功能有: 1.用户注册 2.用户登录 3.用户列表展示 4.用户信息修改 5.用户信息删除 本项目涉及到的知识点有: 1.JDBC 2.Servlet 3.过滤器 4…EL与JSTL表达式 一、首先打开mysql数据库 新建一个数据库test...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,618
精华内容 30,647
关键字:

javaweb完整项目

java 订阅