Java Web 03 (页面跳转&JDBC)

今日思维导图:

 


一、页面跳转方式(两种)

1、重定向 response : response.sendRedirect("success.jsp");

2、请求 request : request.getRequestDispatcher("success.jsp").forward(request, response);

两者之间的关系:

两者之间的区别:

//页面跳转方式
//1、重定向语法response ①能够将页面跳转,并且地址栏发生转变,但是不能将值传递到下一个页面 ③能够跳转到任意资源
//在客户端发挥作用
//response.sendRedirect("success.jsp");
//2.、转发 request ②能够将页面跳转,地址栏不发生改变,但是能将值传递到下一个值 ④只能跳转到当前页面
//在服务器端发生作用
//request.getRequestDispatcher("success.jsp").forward(request, response);

二、JDBC(连接数据库Oraacle)

主界面效果图展示如下:

代码展示如下:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2> 注册界面</h2>
	<form action="dologin.jsp" method="post"> 
	ID:<input type="text" name="iid"><br>
	用户名:<input type="text" name="iname"><br>
	密码:<input type="password" name="ipwd"><br>
	性别:<input type="radio" name="isex" value="男">男
	<input type="radio" name="isex" value="女">女<br>
	爱好:<input type="checkbox" name="ihobby" value="干饭">干饭
	<input type="checkbox" name="ihobby" value="睡觉">睡觉
	<input type="checkbox" name="ihobby" value="网易云">网易云<br>
	地址:<select name="iaddress">
			<option value="湖南省">湖南省</option>
			<option value="湖北省">湖北省</option>
			<option value="河南省">河南省</option>
		</select><br>
	备注:<textarea rows="10" cols="15" name="ibak"></textarea></br>
	<input type="submit" name="登录">
	<input type="reset" name="清空">
	</form>
</body>
</html>

再根据其中name值获取该对象 代码展示如下:

<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//纯java代码
	//设置编码方式
	request.setCharacterEncoding("utf-8");
	//接收提交过来的值(ID&用户名&密码)
	String id = request.getParameter("iid");
	String name = request.getParameter("iname");
	String pwd = request.getParameter("ipwd");
	//取不同类型的值
	//取性别 地址 备注 都是根据name值获取值
	String sex = request.getParameter("isex");
	String address = request.getParameter("iaddress");
	String bak = request.getParameter("ibak");
	//获取爱好的值
	String[] ss = request.getParameterValues("ihobby");//返回类型是个字符串的数组
	String hobby = "";//用来拼接
	//循环遍历
	for(String s:ss){
		hobby+=s+",";//用逗号隔开 
	}
	//如果看不过最后的那个逗号 可以用substring截取掉
	//out.print(hobby);
	
	//jdbc连接Oracle  插入到数据库中
	
	//两个静态常量
	String URL="jdbc:oracle:thin:@localhost:1521:orcl";
	String CNAME="oracle.jdbc.driver.OracleDriver";
	//OracleDriver
	
	//记载驱动
	Class.forName(CNAME);
	
	//创建连接
	Connection con = DriverManager.getConnection(URL,"scott","tiger");
	
	//定义sql语句
	String sql="insert into tb_0325(sid,sname,spwd,ssex,shobby,saddress,sbak) values(?,?,?,?,?,?,?)";
	
	//获得执行对象
	PreparedStatement ps = con.prepareStatement(sql);
	
	//给占位符赋值
	ps.setInt(1, Integer.parseInt(id));//String-->int
	ps.setString(2,name);
	ps.setString(3,pwd);
	ps.setString(4,sex);
	ps.setString(5,hobby);
	ps.setString(6,address);
	ps.setString(7,bak);
	
	//开始执行 增删改int 查rs
	int n = ps.executeUpdate();//影响行数
	
	//关闭资源 增删改2个 查3个
	if(con!=null&&con.isClosed()==false){
		con.close();
	}
	else{
		ps.close();
	}
	//判断
	if(n>0){
		out.print("插入成功");
	}
	else{
		out.print("插入失败");
	}	
	//out.print(name+" "+pwd+" "+sex+" "+address+" "+bak);
	//页面跳转方式
	//假设法:假设数据表里存在用户名为admin 密码为123456
	//if("admin".equals(name)&&"123456".equals(pwd)){
		//说明登录成功 跳转到success.jsp
		//页面跳转方式2中
		//1、重定向语法response ①能够将页面跳转,并且地址栏发生转变,但是不能将值传递到下一个页面 ③能够跳转到任意资源
		//在客户端发挥作用
		//response.sendRedirect("success.jsp");
		//2.、转发 request ②能够将页面跳转,地址栏不发生改变,但是能将值传递到下一个值 ④只能跳转到当前页面
		//在服务器端发生作用
		//request.getRequestDispatcher("success.jsp").forward(request, response);//req.getreq.for
		
	//}
	//else{
		//说明登录失败 提示用户并返回登录界面 js的跳转属于重定向 因为地址栏发生了改变
		//out.print("<script>alert('用户名或密码有误');location.href='login.jsp';</script>");//输送到页面
		
	//}
%>

好了,以上就是今天的内容了,本节完。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个非常简单的MVC框架,实现了类似Spring MVC的基本功能。 1、包括自动扫描绑定映射路径,只要在web.xml中指定扫描包,系统启动后会将请求url绑定到指定的处理方法上。如: 在web.xml中定义如下: <context-param> <param-name>ScanPackage</param-name> <param-value>com.mvc.controller</param-value> </context-param> 容器在启动时候,会将com.mvc.controller下所有映射路径绑定处理方法上,假如在扫描包中定义下列类: import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.hxw.simple.light.mvc.annotation.MappingMethodAnnotation; import com.hxw.simple.light.mvc.view.SimpleModelView; import com.mvc.verification.VerificationCode; public class LoginController { @MappingMethodAnnotation(mappingMethod = "/login.do") public String login(HttpServletRequest request, HttpServletResponse response) { return "login/main"; } @MappingMethodAnnotation(mappingMethod = "/loginvm.do") public SimpleModelView loginView(HttpServletRequest request, HttpServletResponse response) { SimpleModelView mv = new SimpleModelView("login/mainmv"); Map<String, String> m = new HashMap<String, String>(); m.put("beij", "北京"); m.put("sha", "上海"); m.put("nanj", "南京"); mv.setAttribute("city", m); return mv; } @MappingMethodAnnotation(mappingMethod = "/Verify.do") public void service(HttpServletRequest arg0, HttpServletResponse arg1) throws IOException { HttpServletRequest request = (HttpServletRequest) arg0; HttpServletResponse response = (HttpServletResponse) arg1; response.setContentType("image/jpeg"); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); VerificationCode vCode = new VerificationCode(); BufferedImage bufferImage = vCode.getImageData(); HttpSession session = request.getSession(); response.addCookie(new Cookie("JSSESIONID", session.getId())); ServletOutputStream responseOutputStream = response.getOutputStream(); ImageIO.write(bufferImage, "JPEG", responseOutputStream); responseOutputStream.flush(); responseOutputStream.close(); } } 那么在接到url请求如:http://localhost:8080/TestSimpleMVC/loginvm.do 会调用指定的方法处理。 2、支持视图定义,在web.xml定义了视图路径后: <servlet> <servlet-name>DelegateForwardServlet</servlet-name> <servlet-class>com.hxw.simple.light.mvc.servlet.DelegateForwardServlet</servlet-class> <init-param> <param-name>prefix</param-name> <param-value>/WEB-INF/view/</param-value> </init-param> <init-param> <param-name>suffix</param-name> <param-value>.jsp</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DelegateForwardServlet</servlet-name> <url-pattern>/SYS_FORWARD_URL.fo</url-pattern> </servlet-mapping> 只需在执行完方法后,返回字符串:如return "login/main"就会跳转到指定视图,还可以在视图中用EL表单式访问modelview数据,例子如: SimpleModelView mv = new SimpleModelView("login/mainmv"); Map<String, String> m = new HashMap<String, String>(); m.put("beij", "北京"); m.put("sha", "上海"); m.put("nanj", "南京"); mv.setAttribute("city", m); return mv; 3、支持数据参数自动绑定如: @ParamAttribute(type = ParamaAttributeType.REQUEST, key = "userPassword") String s, @ParamAttribute(type = ParamaAttributeType.SESSION, key = "11212") String s1, @ParamAttribute(type = ParamaAttributeType.SERVLETCONTEXT, key = "32312") String s2, @ParamAttribute(type = ParamaAttributeType.REQUEST, key = "userNames") String[] s3 系统根据参数指定的范围,这指定范围内赋值到参数上,你还可以直接使用javabean做参数绑定,如: public class User extends PaginatedHelper { private static final long serialVersionUID = -8225389551152428829L; private String userName; private String userPassword; public User() { super(); } public User(String userName, String userPassword) { super(); this.userName = userName; this.userPassword = userPassword; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } 在方法上带上 Uer user后,属性名称相同的数据就会赋值到javabean上。不必再使用繁琐的user.setUserName(request.getParameter("userName")); 3、简便的jdbc操作 有查询模板QueryTemplate,命名查询NamedQueryTemplate及bean作为参数的BeanQueryTemplate等。支持返回javabean类型,javabean列表, MAP类型,map列表类型,统计结果queryForInt等。
1. 总体介绍 本次项目主要以本学期所学内容为基础,采用servlet+jsp+jdbc的技术以及mvc模式进行项目开发,本次开发的内容主要以实现CRUD核心功能为主的教务管理系统,分为学生端和教师端,前端采用jquery进行数据传输以及处理,bootstap写界面。 2. 技术架构 运行环境:tomcat9+mysql5+maven3.8+jdk8 前端技术:jquery 用以数据处理以及前端验证以及生成验证码等等 Bootstrap 前端界面处理 后端技术:servelt+jsp maven进行jar包和第三方库管理 采用jspsmart进行文件的操作处理 数据库:mysql5 基于MVC的分层思想及采用jsp+servelt技术的B/S结构的应用系统,系统主要开发语言为JAVA,JSP。数据库要求使用MySQL8.0,应用服务器选用Tomcat服务器 3. 功能介绍 系统能够提供用户有好的界面 系统具有良好的允许效率 系统具有良好的扩充性,灵活性 系统管理操作简单易懂 3.1 总体结构 3.2 模块详情 学生模块: 注册: 1. 用户点击注册,进行注册; 2. 用户输入注册信息; 3. 校验数据:如果用户名重复或者两次密码校验不合格或者密码规格不符合,则提示错误信息; 4. 若信息无错误,提示注册成功,跳转到登录页。 登录: 1. 用户进入系统未进行登录则自行跳转登录页面; 2. 点击忘记密码可进行密码找回; 3. 提交信息进行校验,查看用户名密码是否为空以及是否符合格式,随后在后台进行校验,合格则进行登录跳转到用户界面; 4. 若登录信息不正确,则提示登录错误信息。 查看成绩: 1. 点击查看成绩,打印成绩列表; 2. 支持到处成绩单为pdf格式。 导出成绩: 1. 点击到处按钮; 2. 系统自动处理并到处成pdf。 个人信息管理: 1. 选择上传头像 2. 修改个人信息:按需填写个人信息,随后进行保存则覆盖修改以往的个人信息。 退出登录: 1. 点击退出登录,自动退出到首页并删除本地和服务器缓存。 教师模块: 注册: 1用户点击注册,进行注册; 2用户输入注册信息; 3校验数据:如果用户名重复或者两次密码校验不合格或者密码规格不符合,则提示错误信息; 4若信息无错误,提示注册成功,跳转到登录页。 登录: 1用户进入系统未进行登录则自行跳转登录页面; 2点击忘记密码可进行密码找回; 3提交信息进行校验,查看用户名密码是否为空以及是否符合格式,随后在后台进行校验,合格则进行登录跳转到用户界面; 4若登录信息不正确,则提示登录错误信息。 个人信息管理: 1选择上传头像 2修改个人信息:按需填写个人信息,随后进行保存则覆盖修改以往的个人信息。 学生管理: 1. 点击添加学生,填写学生信息进行添加; 2. 修改学生信息,点击修改,按需填写要修改的学生信息,进行保存覆盖修改; 3. 点击删除学生数据,提示是否删除,确定则删除,取消则不删除; 4. 查看成绩,点击查看学生成绩,单独列出学生成绩列表; 成绩管理: 1. 点击成绩管理,列出所有学生成绩; 2. 点击修改,勾选需要修改的学生,按需填写修改信息,保存覆盖修改学生信息。 退出登录: 1点击退出登录,自动退出到首页并删除本地和服务器缓存。 4. 页面设计 静态jsp页面和jquery和bootstrap 5. 数据库设计 权限对照表: 表名: role 名称 类型 长度 允许空值 是否主键 注释 uid 整型 11 否 是 权限等级 utype 字符 255 否 否 用户等级名称 分数表: 表名: score 名称 类型 长度 允许空值 是否主键 注释 id 整型 200 否 是 学号 dat 字符 255 否 否 课程1分数 Android 字符 255 否 否 课程2分数 Jsp 字符 255 是 否 课程3分数 学生表: 表名: student 名称 类型 长度 允许空值 是否主键 注释 id 整型 59 否 是 学号 password 字符 255 否 否 登陆密码 Name 字符 255 否 否 学生姓名 Sex 字符 255 是 否 性别 School_date 字符 255 是 否 入学时间 Major 字符 255 是 否 专业 email 字符 255 是 否 邮箱 教师表: 表名: student 名称 类型 长度 允许空值 是否主键 注释 id 整型 59 否 是 教师工号 password 字符 255 否 否 登陆密码 Name 字符 255 否 否 教师姓名 Sex 字符 255 是 否 性别 email 字符 255 是 否 邮箱
实现登录页面需要以下步骤: 1. 创建一个 HTML 页面,包含用户名和密码的输入框以及提交按钮。 ```html <!DOCTYPE html> <html> <head> <title>Login Page</title> </head> <body> <h2>Login</h2> <form action="login" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username"><br><br> <label for="password">Password:</label> <input type="password" id="password" name="password"><br><br> <input type="submit" value="Submit"> </form> </body> </html> ``` 2. 在后端编写 Java 代码实现登录验证逻辑。这里以 Servlet 为例,需要重写 `doPost` 方法,读取表单数据并判断用户名和密码是否正确。 ```java public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); if (username != null && username.equals("admin") && password != null && password.equals("admin123")) { // 登录成功 request.getSession().setAttribute("username", username); response.sendRedirect("success.html"); } else { // 登录失败 response.sendRedirect("error.html"); } } } ``` 3. 在 web.xml 中配置 Servlet 映射和静态资源映射,使得浏览器访问 /login 能够调用 LoginServlet 进行登录验证。 ```xml <web-app> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.example.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <error-page> <error-code>404</error-code> <location>/404.html</location> </error-page> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/mydb</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app> ``` 4. 运行项目,浏览器访问登录页面,输入正确的用户名和密码后,即可跳转到成功页面;输入错误的用户名和密码后,即可跳转到错误页面。 以上是一个简单的 Java Web 实现登录页面的过程,具体实现方式还有很多种,可以根据自己的需求和技术水平进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值