1:JSP
JSP的基本语法:
指令标识page,include,taglib;page指令标识常用的属性包含Language用来定义要使用的脚本语言;contentType定义JSP字符的编码和页面响应的MIME类型;pageEncoding:jsp页面的字符编码;include指令<%@ include file="path"%>静态包含,先包含,后编译处理;<jsp:include page="要包含的文件"> 动态包含,先编译处理,后包含;脚本标识包含:jsp表达式,声明标识,脚本程序jsp表达式<%= %>在里面输出一个变量或者一个具体的内容声明标识<%! %>在里面定义全局变量,方法,类脚本程序<% %>在里面定义局部变量,编写语句jsp的注释<!-- -->html注释,客户端可见<%-- --%>jsp注释 客户端不可见//java单行注释/* */java多行注释动作标识:<jsp:include page="要包含的文件"> 动态包含,先编译处理,后包含;jsp跳转指令<jsp:forward> <jsp:param value="" name=""></jsp:forward>服务器内部跳转,可带参数。jap的九大内置对象,pageContext,request,response,session,application,config,out,page,exception;前五个熟练掌握jsp四种数据保存范围page:只在一个页面中保存数据request:只在一个请求中保存数据session:在一次会话范围内保存数据,仅供单个用户使用 application:在整个服务器上保存数据,所有用户共享response对象response内置对象用于响应客户请求,向客户端输出信息功能1自动刷新应用功能2页面重定向应用,客户端跳转功能3操作cookie应用功能4cookie信息是存在客户端的,session信息是存在服务器的。2: Javabean 组件引入JavaBean 是使用 Java 语言开发的一个可重用的组件,在 JSP 开发中可以使用 JavaBean 减少重复代码,使整个 JSP 代码的开发更简洁。jsp:useBean 创建 javabean<jsp:useBeanid="实例化对象名称"scope="保存范围"class="类完整名称"/> Scope,一共有 page,request,session 和 application4 个属性范围,默认是 page;jsp:setProperty 设置 javabean 属性值<jsp:setPropertyproperty="属性名称"name="实例化对象的名称"value="属性值"param="参数名称"/> Property=”*” 自动匹配所有jsp:getProperty 获取 javabean 属性值<jsp:getPropertyproperty="属性名称"name="实例化对象的名称"/>javabean 的保存范围Javabean 的保存范围有 page,request,session.application,默认是 page;javabean 删除Page 范围:pageContext.removeAttribute(“javaBeanName”);request 范围:request.removeAttribute(“javaBeanName”);
session 范围:session.removeAttribute(“javaBeanName”);
application 范围:application.removeAttribute(“javaBeanName”);
3:servlet 引入1,在 Servlet 中获取 session,application 2,客户端跳转 response.sendRedirect("目标地址"); 3,服务器跳转:RequestDispatcher rd=request.getRequestDispatcher("目标地址"); rd.forward(request,response);第一首先创建数据库和数据表,我在这里使用了sqlyog图形化界面创建数据库和数据表。如下图所示
需要注意的就是数据库的名称和数据表的名称后面需要用,以及id设置为了自增。
第二开始开发,采用mvc的设计模式,分开进行设计;
首先package com.ningmeng.model;对User类进行封装数据。为了后面方便使用;注意是在不同的包中的
1 package com.ningmeng.model; 2 3 public class User { 4 5 private int id; 6 private String username; 7 private String password; 8 9 10 public User() {11 super();12 }13 public User(String username, String password) {14 super();15 this.username = username;16 this.password = password;17 }18 public int getId() {19 return id;20 }21 public void setId(int id) {22 this.id = id;23 }24 public String getUsername() {25 return username;26 }27 public void setUsername(String username) {28 this.username = username;29 }30 public String getPassword() {31 return password;32 }33 public void setPassword(String password) {34 this.password = password;35 }36 37 38 }
其次对连接数据库进行封装,方便后面调用连接数据库,这里封装好数据库并进行测试是否连接成功;注意是在不同的包中的;
1 package com.ningmeng.util; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.SQLException; 6 7 public class DbUtil { 8 9 private String url="jdbc:mysql://localhost:3306/db_jsp";10 private String user="root";11 private String password="123456";12 private String driver="com.mysql.jdbc.Driver";13 14 public Connection getCon() throws Exception{15 Class.forName(driver);16 Connection con=DriverManager.getConnection(url, user, password);17 return con;18 }19 20 public static void getClose(Connection con) throws SQLException{21 if(con!=null){22 con.close();23 }24 }25 26 /*public static void main(String[] args) {27 DbUtil db=new DbUtil();28 try {29 db.getCon();30 System.out.println("测试连接数据库,连接成功");31 } catch (Exception e) {32 // TODO Auto-generated catch block33 e.printStackTrace();34 System.out.println("测试连接数据库,连接失败");35 }36 37 }*/38 }
对数据封装好,对连接数据库封装好,接下来封装对数据库的操作;注意是在不同的包中的;
1 package com.ningmeng.dao; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 8 import com.ningmeng.model.User; 9 10 public class UserDao {11 12 public User login(Connection con,User user) throws SQLException{13 User resultUser=null;14 String sql="select * from user where username=? and password=?";15 PreparedStatement ps=con.prepareStatement(sql);//16 ps.setString(1, user.getUsername());17 ps.setString(2, user.getPassword());18 ResultSet rs=ps.executeQuery();19 if(rs.next()){20 resultUser=new User();21 resultUser.setUsername(rs.getString("username"));22 resultUser.setPassword(rs.getString("password"));23 }24 return resultUser;25 }26 }
封装好上面的接下来就进行主要代码的开发,使用Servlet对数据进行处理和操作;注意在不同的包中
1 package com.ningmeng.web; 2 3 import java.io.IOException; 4 import java.sql.Connection; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse;10 import javax.servlet.http.HttpSession;11 12 import com.ningmeng.dao.UserDao;13 import com.ningmeng.model.User;14 import com.ningmeng.util.DbUtil;15 16 public class LoginServlet extends HttpServlet{17 18 DbUtil db=new DbUtil();19 UserDao userDao=new UserDao();20 /**21 * 22 */23 private static final long serialVersionUID = 1L;24 25 @Override26 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {27 this.doPost(request, response);28 }29 30 @Override31 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {32 String username=request.getParameter("username");33 String password=request.getParameter("password");34 Connection con=null;35 try {36 User user=new User(username,password);37 con=db.getCon();38 User currentUser=userDao.login(con, user);39 if(currentUser==null){40 //System.out.println("no");41 request.setAttribute("error", "用户名或者密码错误");42 request.setAttribute("username", username);43 request.setAttribute("password", password);44 request.getRequestDispatcher("login.jsp").forward(request, response);45 }else{46 //System.out.println("yes");47 HttpSession session=request.getSession();48 session.setAttribute("currentUser",currentUser);49 response.sendRedirect("main.jsp");50 }51 } catch (Exception e) {52 // TODO Auto-generated catch block53 e.printStackTrace();54 }55 56 }57 58 59 }
设置好Servlet的类文件后需要配置xml,代码如下。
1 23 web04 45 12 13index.html 6index.htm 7index.jsp 8default.html 9default.htm 10default.jsp 1114 17LoginServlet 15com.ningmeng.web.LoginServlet 1618 21LoginServlet 19/login 20
最后进行主页面的开发,创建jsp页面。需要注意的是action的值是xml的<url-pattern>/login</url-pattern>中/login的值,这点需要注意;
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 4 5 6 729 30Insert title here 8 9 10
最后一个为了优化,更好的可视化,一个登录成功的验证页面,如下:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 4 5 6 7Insert title here 8 9 10登录成功
11 当前用户:${currentUser.username}12 当前密码:${currentUser.password}13 14
登陆页面
登录成功页面:
登录失败页面:
包的分类以及封装设计;
https://www.cnblogs.com/biehongli/p/6078740.html