servlet(二)

Java类/方法可否被浏览器直接访问到?

以前我们用浏览器可以直接打开一个html文件(前端):浏览器显示地址

那后端的java类/方法可否被浏览器直接调用呢?可以。借助Tomcat服务器+servlet技术

java方法/类在浏览器访问路径是什么?

http://IP地址:Tomcat软件启动占用的端口号/项目名称/WebServlet这个注解命名的具体类的访问别名

http://localhost:8088/MyWeb/user

localhost代表本地的、自己电脑的应用,也可以用127.0.0.1代表本机

带参数的访问,查询、新增、修改、删除,不同的操作如何区分?

参考:http://localhost:8088/MyWeb/user?action=login&username=zq&pwd=123

用参数比如传递一个action的参数,根据传递的值不同,判断发来的是什么操作请求

后台servlet处理一个操作的过程: (1)获取前台传来的参数,确定什么操作、操作哪一个数据

(2)逻辑判断、业务处理:其实就是对数据库表增删改查操作

(3)跳转到新页面(可带着查询的数据) 或者 直接返回前台数据,不跳转页面

//注解:代替一些配置文件的配置 @WebServlet给前台jsp提供一个访问地址
//http://localhost:8088/MyWeb/user
@WebServlet("/user")
public class UserServlet extends HttpServlet {
	@Override
	public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 业务逻辑代码
		System.out.println("进来了");
		// 1、获取从前台或从浏览器地址传进来的参数
		// HttpServletRequest 里面存有前台传来的参数;可以往前台页面上传数据;执行页面的跳转serlvet类里面跳到某个页面
		// HttpServletResponse 主要有个作用可以直接返回数据,不需要跟着页面传输数据
		String action = req.getParameter("action");

		// null.equals
		// http://localhost:8088/MyWeb/user?action=toLogin&username=zq&pwd=123
		if (null != action && action.equals("toLogin")) {// 从系统上的注销操作,跳转到登陆页面
			// 跳到页面时,想传递一个数据;第一个参数放传递数据变了的名字,第二个参数传递的数据的值
			req.setAttribute("msg", "今天天气真好啊");
			// 也可以传任何对象Object
			Map<String, String> map = new HashMap<String, String>();
			map.put("name", "zq");
			map.put("age", "22");
			req.setAttribute("map", map);
			// requst跳转到某个页面代码
			req.getRequestDispatcher("index.jsp").forward(req, resp);
		} else if (action.equals("delete")) {
			// 页面保持不动的情况,向后台发一请求,ajax请求,局部刷新,页面不动;
			// 如果是<a>超链接的跳转,都是直接整个页面都刷新、跳转了,那种不是ajax请求
			// ajax请求返回前台的只是一个数据结果,不需要跳转页面
			resp.setContentType("text/html;charset=utf-8");// 设置页面显示的数据是中文编码方式,不然会乱码
			PrintWriter out = resp.getWriter();
			out.print("删除成功");
			out.flush();
			out.close();
		}

	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

	}
}

<做个登录功能>

一、在index.jsp上添加登录表单

表单:类似我们填的纸质的表一样,里面有手写部分:姓名、身份证号、家庭住址;还有勾选的:性别男、女;

在html页面开发时用<form></form>标签来表示。

Form标签里面放置具体的项,比如姓名需要输入,就需要用文本框<input type=“text” … />

如果要用下拉列表选择,就用<select></select>标签

<!-- 引入自定义的css样式 -->
<link href="public.css" type="text/css" rel="stylesheet" />
<title>首页</title>
</head>
<body>
<div id="loginDiv">
	<p class="logTitle">登录</p>
	<form><!-- 填写的的纸质表格的信息,在页面展示都要放上form标签里面 -->
		<div class="formInput">
			<span>用户名</span>
			<!-- input标签用来 type="text"展示文本框的,可以输入的 -->
			<input type="text" name="username" />
		</div>
		<div class="formInput">
			<span>密码</span>
			<!-- input标签用来 password类型看不见输入的字是什么 -->
			<input type="password" name="pwd" />
		</div>
		<input type="submit" class="formButton" value="登陆" />
	</form>
</div>

<%-- <!-- 接受别人jsp传来的、servlet类传来的数据 -->
<!-- 1、常用EL表达式 -->
<span>${msg }</span><p></p>
<span>${map.name}</span><p></p>

<!-- 2、有点麻烦,最原始的方法 jsp里面内置request、respense这样的对象/类 -->
<span><%=request.getAttribute("msg") %></span> --%>
</body>
</html>

注意:get和post请求可以在这里设置

二、在UserServlet处理提交来的数据

接收传到servlt类里参数→request.getParameter("username");

返回到前台页面数据→request.setAttribute("msg", "您用户名或密码不正确");

从servlet类里面跳转某个页面→request.getRequestDispatcher(“main.jsp”).forward(request, response);(注意:request.setAttribute中的数据会被带到跳转到的jsp页面)

Jsp页面接收servlet传来的数据→

<!--错误提示-->
<label style="color:#f00;">${msg}</label>

${servlet用request.setAttribute设置的变量名   }

在UserServlet判断

else if (action. equal sIgnoreCase ("login")) {
      //1、接收前台传来的用户名和密码:
      String username = request. getParameter ("username") ; / /use rname就是表单里面的name名
      String pwd = request. getParameter ("pwd") ;
      String role = request. getParameter("role") ;
      System. out. println (username+"---"+pwd+"---"+role) ;
      //2、判断用户名、密码非空(一般会在前台验证)
      if (nul1 !=username && !username. isEmpty ()
                    && null!=pwd && !pwd. isEmpty()) {//查询数据库表的;
              if (username . equals ("admin") && pwd. equals("123")) {
                      returnJsp = "main. jsp"; / /跳转系统主页面去
              } 
      }else{
               request. setAttribute ("msg"," 您用户名或密码不正确") ;
               returnJsp = "index. jsp";
           }
}
if (nul1 !=returnJsp) {
     request. ge tRequestDi spa tcher (returnJsp) . forward (request, response) ;
}

转载于:https://my.oschina.net/u/4090404/blog/3049639

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值