jsp+servlet

发布时间 2023-07-04 19:51:54作者: liuxin6de1b

1.jsp的执行过程

步骤一:翻译(jsp文件翻译成java文件)

步骤二:编译(java文件编译成class文件)

步骤三:执行(执行class(字节码)文件)

2.在jsp中实现日期输出在网页上

<%

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

String datenow=sdf.format(new Date())

%>

<%=

datenow

%>

3.在jsp中使用运算

<%

int numa=4,numb=5;

int result=numa+numb

%>

<%=

result

%>

4.jsp综合实战项目

步骤一创建maven工程

步骤二创建工程包 util(工具包)entity(封装包)dao(方法包)service(方法包)servlet(动态输出包)

步骤三:引入pom依赖   在pom.xml中将dependency中的内容替换成

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
步骤四创建Servlet类
步骤4.2测试webxml

打开WEB-INF下的web . xml

web-app中的默认代码改成如下

<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>DemoServlet</servlet-name>名字
<servlet-class>cn.kgc.servlet.DemoServlet</servlet-class>里面放DemoServlet的路径
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>DemoServlet是名字,可以任意取名,但是要和上面的servlet-name统一
<url-pattern>/DemoServlet</url-pattern>这个是DemoServlet是ip地址。网址里输入localhost:8080/DemoServlet
</servlet-mapping>

步骤5:创建测试DemoServlet

在Servlet目录下new一个类型为DemoServlet的类把里面的代码替换成

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("index.jsp").forward(request,response);转发代码
}

步骤六.创建数据库和表

步骤七. 实例类

在entity包中对数据库进行封装(封装表内的所有属性名)

步骤八.在util包下新建basedao类

basedao类中放固定的工具

如:

   //声明三大对象Connection,PreparedStatement,ResultSet
protected static Connection conn;
protected static PreparedStatement ps;
protected static ResultSet rs;
public static final String DRIVER="com.mysql.cj.jdbc.Driver";
public static final String URL="jdbc:mysql://localhost:3306/db_08";
public static final String USERNAME="root";
public static final String PASSWORD="123456";
//连接数据库的方法和关闭数据库的方法
public void getConnection(){
try {
Class.forName(DRIVER);
conn= DriverManager.getConnection(URL,USERNAME,PASSWORD);
// System.out.println(conn);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
//关闭
public void closeConn(){
try {
if (rs!=null){
rs.close();
}
if (ps!=null){
ps.close();
}
if (conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
//通用增删改
public int executeUpdate(String sql ,Object[] params){
int flag=0;
try {
getConnection();
ps=conn.prepareStatement(sql);
if (params!=null){
for (int i=0;i<params.length;i++){
ps.setObject(i+1,params[i]);
}
}
flag=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeConn();
}
return flag;
}
//通用查询
public ResultSet executeQuery(String sql ,Object[] params){
getConnection();
try {
ps=conn.prepareStatement(sql);
if (params!=null){
for (int i=0;i<params.length;i++){
ps.setObject(i+1,params[i]);
}
}
rs=ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public static void main(String[] args) {
BaseDao bd=new BaseDao();
bd.getConnection();
}

步骤九

在dao包和service包内新建一个接口

接口中方法如下

public Integer addDemo(Demo demo);

public Interger delById(Integer id);

public Integer updateDemo(Demo demo);

public Demo findById(Integer id);

public List<Demo>findAll;

步骤10 DemoDaoImpl

在dao包下新建一个Impl包,Impl包里新建一个DemoDaoImpl类

DemoDaoImpl类首先继承basedao,再实现接口中的方法

可以使用alt加enter快捷键,重写接口中的所有方法

返回值调用父类(子类的方法中调用父类可以用super),在把sql语句传进BaseDao中,然后调用BaseDao中的方法

在DemoDaoImpl包中要写各个方法的sql语句

增删改: 

增:return super. executeUpdate("insert into t_user (id,name,pwd)value(?,?,?)",

new Object [ ]{ demo.getId(),demo.getNme,demo.getPwd});

删:return super.executeUpdate("delete from t_user where id=?",new Object[ ]{id});

改:return super.executeUPdate("update t_user set name=? ,pwd=? where id=? ",

new Objer[ ]{demo.getName,demo.getPwd,demo.getId});

查询某个或者查询全部

查询某个:通用查询 有一个返回结果集用来写sql语句。增删改没有

Demo demo=new Demo();

rs=super.executeQuery(“ select*from t_uesr where id=?”,new Object[ ]{id})

try-catch

while(rs. next()){

demo.setId(rs.getInt("id"))

demo.setName(rs.getString("name"))

demo.setPwd(rs.getString("pwd"))

}循环遍历表中的数据,与id等于?的进行匹配

return demo;

查询全部:

List <Student>list=new ArrayList<>();

String sql="select *from t_user";

Object[ ]params=null;

rs=super . executeQuery(sql,parms)

try-catch-finally

while(rs. next()){

demo.setId(rs.getInt("id"))

demo.setName(rs.getString("name"))

demo.setPwd(rs.getString("pwd"))

list.add(demo); }

finally调用父类的关闭方法

return list;

步骤11:DemoService接口,方法同Demodao接口

步骤12.在Service包中建一个Impl包,Impl包中建一个DemoServiceImpl类

DemoServiceImpl类重写DemoService接口中的所有方法;

重写方法的上面加上:DemoDaoImpl ddi=new DemoDaoImpl();

增:return ddi.addDemo(DemoDaoImpl中增加的方法名)(demo)

删:return ddi.delByIdDemo (id)

改:return ddi.updateDemo (demo)

查某个:return ddi.findById(id)

查全部:return ddi.findall()

以上均为dao中的基础操作

步骤13 index.jsp

可以单独通过html的表格格式。table 和 tr让表格输出在网页上。不过这是死的表格

步骤14.Dmeoservlet

在步骤5中写了转发代码但是并没有写完

转发代码前。需要给服务器端赛数据

ArrayList<demo>list=new ArrayList<>();

Demo demo=new Demo();

demo.setId(1);

demo.setName("ls")

dmeo.setPwd("111")

Demo demo1=new Demo();

demo1.setId(2);

demo1.setName("zs")

dmeo1.setPwd("222")

 list.add(demo)

list.add(demo1)

request.setAttribute("list",list)第二list是与list.add绑定的;第一个“list”与index.jsp中的${list}绑定

然后进行转发,转发到index.jsp

步骤14.2 在insex.jsp中引入jstl表达式并修改

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>//引入jstl表达式
<table cellpadding="0" cellspacing="0" border="1px solid">表格格式
<tr>
<td>编号</td>
<td>名称</td>
<td>昵称</td>
<td>身高</td>
</tr>第一行的死值
<c:forEach items="${lists}" var="list">(c:forEach等价于java中的循环遍历)(var="list" 给var一个别名,别名与下面的list.等价)
<tr>
<td>
${list.id}
</td>
<td>
${list.name}
</td>
<td>
${list.nickname}
</td>
<td>
${list.height}
</td>
 </tr>
</c:forEach>
</table>
步骤15:servlet 调用service(调用数据库)
把方法中的代码替换成
DemoServiceImpl dsi=new DemoServiceImpl();new一个DemoServiceImpl
List<Demo>list=.findAll();(利用dao中查找全部的方法将数据塞入集合中)
request.setAttribute("lists",list);//在request 请求对象中绑定数据【servlet中绑定数据】(绑定集合)
request.getRequestDispatcher("index.jsp").forward(request,response);//转发到index.jsp(集合转发到index.jsp中)(循环遍历集合的数据输出在网页上)