1.JSP概述(Java Server Pages)
运行在服务器端的Java页面
使用HTML嵌套Java代码实现
2.JSP执行过程
3.使用JSP实现输出
编写JSP页面,分别声明整型的全局变量和局部变量,观察两者自加后的输出结果,结合JSP执行原理思考出现输出结果的原因
4.Web程序调试和排错
Web程序常见错误:
404错误---找不到访问的页面或资源
- 运行时,URL输入错误
- 将页面放在WEB-INF下
- 外部启动Tomcat,未部署项目
500错误----JSP页面代码有误
- JSP页面代码有错误
页面无法显示
- 未启动Tomcat
5.具体项目示例:实现新闻系统的用户注册
5.1 User.java
public class User {
private int id;
private String username;
private String password;
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
5.2 NewsSystem.java
public class NewsSystem {
static{
ns=new NewsSystem();
}
private static NewsSystem ns;
private NewsSystem(){}
public static NewsSystem getInstance(){
return ns;
}
public List<User> users=new ArrayList<>();
public static int id_num;
public void addUser(String username,String password,String cfmPwd){
if(password.equals(cfmPwd)){
User u=new User();
u.setUsername(username);
u.setId(++id_num);
u.setPassword(password);
users.add(u);
}else{
System.out.println("密码前后不一致");
}
System.out.println("当前共有"+ users.size()+"个用户。");
}
}
5.3 TestRun.java
public class TestRun {
public static void main(String[] args) throws Exception {
BaseDao dao=new BaseDao();
dao.getConnection();
String sql="create table tb_user_info(" +
"id int(4) auto_increment primary key," +
"username varchar(30),password varchar(30))";
dao.execute(sql);
dao.close();
}
}
5.4 index.jsp
<%@ page import="cn.kgc.jdbc.dao.BaseDao" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jsp页面接受请求</title>
</head>
<body>
<%
String username = request.getParameter("username");
String password = request.getParameter("pwd");
String cfmPwd = request.getParameter("cfmPwd");
BaseDao dao=new BaseDao();
dao.getConnection();
String sql="insert into tb_user_info(username,password) " +
"values("+username+","+password+")";
dao.execute(sql);
dao.close();
session.setAttribute("username",username);
response.sendRedirect("hello.jsp");
%>
</body>
</html>
5.5 hello.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>欢迎页面</title>
</head>
<body>
<form action="doLogin.jsp">
<p><input type="text" name="username" value="${username}"></p>
<p><input type="password" name="pwd" placeholder="请输出密码"></p>
<p><input type="submit"></p>
</form>
</body>
</html>
5.6 doLogin.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>处理登录的页面</title>
</head>
<body>
<%
String name=request.getParameter("username");
String password=request.getParameter("pwd");
BaseDao dao=new BaseDao();
dao.getConnection();
String sql="select * from tb_user_info where username='" +
name+"' and password='"+password+"'";
dao.query(sql);
ResultSet r = dao.rs;
while(r.next()){
String username = r.getString("username");
if (StringUtils.isNullOrEmpty(username)){
out.print("<h1>用户名或密码不正确</h1>");
}else{
out.print("<h1>恭喜用户"+username+"登录</h1>");
}
}
%>
</body>
</html>